On Tue, Jan 02, 2018 at 02:14:28PM -0700, Jason Gunthorpe wrote: > On Mon, Jan 01, 2018 at 01:07:16PM +0200, Leon Romanovsky wrote: > > > diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c > > index 34c6cb2a0977..a0ea3dca479d 100644 > > +++ b/drivers/infiniband/core/device.c > > @@ -134,7 +134,10 @@ static int ib_device_check_mandatory(struct ib_device *device) > > return 0; > > } > > > > -struct ib_device *__ib_device_get_by_index(u32 index) > > +/* > > + * Caller to this function should hold lists_rwsem > > + */ > > This comment isn't 100% right, the device mutex is also OK to hold, I > dropped it. > > > @@ -141,36 +141,41 @@ static int nldev_get_doit(struct sk_buff *skb, struct nlmsghdr *nlh, > > struct ib_device *device; > > struct sk_buff *msg; > > u32 index; > > - int err; > > + int ret = -ENOMEM; > > > > - err = nlmsg_parse(nlh, 0, tb, RDMA_NLDEV_ATTR_MAX - 1, > > + ret = nlmsg_parse(nlh, 0, tb, RDMA_NLDEV_ATTR_MAX - 1, > > nldev_policy, extack); > > Initializing ret, then overwriting it with nlmsg_parse is silly, and > leads to this bug: > > > msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); > > if (!msg) > > - return -ENOMEM; > > + goto err; > > Wrong return code after the change. > > I fixed it also dropped replacing err with ret since this is probably > going to be backported. > > > port = nla_get_u32(tb[RDMA_NLDEV_ATTR_PORT_INDEX]); > > if (!rdma_is_port_valid(device, port)) > > - return -EINVAL; > > + goto err; > > Same mistake again > > I also squashed this with the prior patch to make backporting simpler > > RDMA/core: Provide locked variant of device name to index function > > And queued it to for-rc > > See below, please check my work. Thanks for taking care.>
Attachment:
signature.asc
Description: PGP signature