Re: [PATCH rdma-next v4 3/9] RDMA/nldev: Add resource tracker doit callback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 07, 2019 at 05:43:51PM +0200, Leon Romanovsky wrote:
> On Tue, Feb 05, 2019 at 02:52:08PM -0700, Jason Gunthorpe wrote:
> > On Sat, Feb 02, 2019 at 01:42:47PM +0200, Leon Romanovsky wrote:
> > > From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> > >
> > > Implement doit callbacks and ensure that users won't provide port values
> > > on resource entry allocated in per-device mode needed for .doit callback.
> > >
> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> > >  drivers/infiniband/core/nldev.c | 186 +++++++++++++++++++++-----------
> > >  include/rdma/restrack.h         |   2 +-
> > >  2 files changed, 127 insertions(+), 61 deletions(-)
> > >
> > > diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
> > > index 7bbc98080488..e5910bbbcec7 100644
> > > +++ b/drivers/infiniband/core/nldev.c
> > > @@ -375,7 +375,6 @@ static int fill_res_qp_entry(struct sk_buff *msg, bool has_cap_net_admin,
> > >  	struct ib_qp *qp = container_of(res, struct ib_qp, res);
> > >  	struct ib_device *dev = qp->device;
> > >  	struct ib_qp_init_attr qp_init_attr;
> > > -	struct nlattr *entry_attr;
> > >  	struct ib_qp_attr qp_attr;
> > >  	int ret;
> > >
> > > @@ -386,10 +385,6 @@ static int fill_res_qp_entry(struct sk_buff *msg, bool has_cap_net_admin,
> > >  	if (port && port != qp_attr.port_num)
> > >  		return 0;
> >
> > Now that the caller is checking if the port is needed or not these
> > 'if (port)' and !port should be removed from the fill functions
>
> I'll check

In any event, the check for 0 port is wrong, so it need some kind of
revision.

> >
> > > +	if ((port && fe->flags & NLDEV_PER_DEV) ||
> > > +	    (!port && ~fe->flags & NLDEV_PER_DEV)) {
> > > +		ret = -EINVAL;
> > > +		goto err;
> > > +	}
> >
> > 0 is a valid port number, this should be something like
> 
> Why? We are not supporting IB switches for now, and port provided

The kernel code supports switches for some reason

> by the user should pass rdma_is_port_valid() check, which requires
> port to be >= 1.

Not if rdma_cap_ib_switch is true.

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux