* re: iser-target: Add iSCSI Extensions for RDMA (iSER) target driver
@ 2016-01-04 21:07 Dan Carpenter
2016-01-06 18:24 ` Nicholas A. Bellinger
2016-01-06 20:20 ` Nicholas A. Bellinger
0 siblings, 2 replies; 5+ messages in thread
From: Dan Carpenter @ 2016-01-04 21:07 UTC (permalink / raw)
To: nab-IzHhD5pYlfBP7FQvKIMDCQ; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Hello Nicholas Bellinger,
The patch b8d26b3be8b3: "iser-target: Add iSCSI Extensions for RDMA
(iSER) target driver" from Mar 7, 2013, leads to the following static
checker warning:
drivers/infiniband/ulp/isert/ib_isert.c:423 isert_device_get()
error: passing non negative 1 to ERR_PTR
drivers/infiniband/ulp/isert/ib_isert.c
417
418 device->ib_device = cma_id->device;
419 ret = isert_create_device_ib_res(device);
420 if (ret) {
421 kfree(device);
422 mutex_unlock(&device_list_mutex);
423 return ERR_PTR(ret);
The warning here is because isert_create_device_ib_res() returns either
a negative error code, zero or one. The documentation is not clear what
that means. AHAHAHAHAHAHAHAH. I joke. There is no documentation.
Anyway, it's definitely a bug and it leads to a NULL dereference in the
caller.
424 }
425
426 device->refcount++;
427 list_add_tail(&device->dev_node, &device_list);
428 isert_info("Created a new iser device %p refcount %d\n",
429 device, device->refcount);
430 mutex_unlock(&device_list_mutex);
431
432 return device;
433 }
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: iser-target: Add iSCSI Extensions for RDMA (iSER) target driver 2016-01-04 21:07 iser-target: Add iSCSI Extensions for RDMA (iSER) target driver Dan Carpenter @ 2016-01-06 18:24 ` Nicholas A. Bellinger [not found] ` <1452104665.26125.22.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org> 2016-01-06 20:20 ` Nicholas A. Bellinger 1 sibling, 1 reply; 5+ messages in thread From: Nicholas A. Bellinger @ 2016-01-06 18:24 UTC (permalink / raw) To: Dan Carpenter; +Cc: linux-rdma, target-devel, Sagi Grimberg Hi Dan, (Adding Sagi CC') On Tue, 2016-01-05 at 00:07 +0300, Dan Carpenter wrote: > Hello Nicholas Bellinger, > > The patch b8d26b3be8b3: "iser-target: Add iSCSI Extensions for RDMA > (iSER) target driver" from Mar 7, 2013, leads to the following static > checker warning: > > drivers/infiniband/ulp/isert/ib_isert.c:423 isert_device_get() > error: passing non negative 1 to ERR_PTR > > drivers/infiniband/ulp/isert/ib_isert.c > 417 > 418 device->ib_device = cma_id->device; > 419 ret = isert_create_device_ib_res(device); > 420 if (ret) { > 421 kfree(device); > 422 mutex_unlock(&device_list_mutex); > 423 return ERR_PTR(ret); > > The warning here is because isert_create_device_ib_res() returns either > a negative error code, zero or one. The documentation is not clear what > that means. AHAHAHAHAHAHAHAH. I joke. There is no documentation. > > Anyway, it's definitely a bug and it leads to a NULL dereference in the > caller. > > 424 } > 425 > 426 device->refcount++; > 427 list_add_tail(&device->dev_node, &device_list); > 428 isert_info("Created a new iser device %p refcount %d\n", > 429 device, device->refcount); > 430 mutex_unlock(&device_list_mutex); > 431 > 432 return device; > 433 } > Looking at the current code, AFAICT isert_alloc_comps() -> ib_req_notify_cq() is the one case where this can happen, right..? Here's a quick patch that I'm applying to target-pending/for-next, that always returns negative upon isert_create_device_ib_res() failure. Thanks Dan! diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert. index 91eb22c..8954e12 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c @@ -356,7 +356,7 @@ isert_create_device_ib_res(struct isert_device *device) dev_attr = &device->dev_attr; ret = isert_query_device(device->ib_device, dev_attr); if (ret) - return ret; + goto out; /* asign function handlers */ if (dev_attr->device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS && @@ -372,7 +372,7 @@ isert_create_device_ib_res(struct isert_device *device) ret = isert_alloc_comps(device, dev_attr); if (ret) - return ret; + goto out; device->pd = ib_alloc_pd(device->ib_device); if (IS_ERR(device->pd)) { @@ -390,6 +390,9 @@ isert_create_device_ib_res(struct isert_device *device) out_cq: isert_free_comps(device); +out: + if (ret > 0) + ret = -EINVAL; return ret; } ^ permalink raw reply related [flat|nested] 5+ messages in thread
[parent not found: <1452104665.26125.22.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>]
* Re: iser-target: Add iSCSI Extensions for RDMA (iSER) target driver [not found] ` <1452104665.26125.22.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org> @ 2016-01-07 15:22 ` Sagi Grimberg 0 siblings, 0 replies; 5+ messages in thread From: Sagi Grimberg @ 2016-01-07 15:22 UTC (permalink / raw) To: Nicholas A. Bellinger, Dan Carpenter Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, target-devel, Sagi Grimberg > diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert. > index 91eb22c..8954e12 100644 > --- a/drivers/infiniband/ulp/isert/ib_isert.c > +++ b/drivers/infiniband/ulp/isert/ib_isert.c > @@ -356,7 +356,7 @@ isert_create_device_ib_res(struct isert_device *device) > dev_attr = &device->dev_attr; > ret = isert_query_device(device->ib_device, dev_attr); > if (ret) > - return ret; > + goto out; > > /* asign function handlers */ > if (dev_attr->device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS && > @@ -372,7 +372,7 @@ isert_create_device_ib_res(struct isert_device *device) > > ret = isert_alloc_comps(device, dev_attr); > if (ret) > - return ret; > + goto out; > > device->pd = ib_alloc_pd(device->ib_device); > if (IS_ERR(device->pd)) { > @@ -390,6 +390,9 @@ isert_create_device_ib_res(struct isert_device *device) > > out_cq: > isert_free_comps(device); > +out: > + if (ret > 0) > + ret = -EINVAL; > return ret; > } > > -- Looks fine, Acked-by: Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> Thanks Nic, and thanks Dan for reporting! -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iser-target: Add iSCSI Extensions for RDMA (iSER) target driver 2016-01-04 21:07 iser-target: Add iSCSI Extensions for RDMA (iSER) target driver Dan Carpenter 2016-01-06 18:24 ` Nicholas A. Bellinger @ 2016-01-06 20:20 ` Nicholas A. Bellinger 2016-01-06 20:22 ` Dan Carpenter 1 sibling, 1 reply; 5+ messages in thread From: Nicholas A. Bellinger @ 2016-01-06 20:20 UTC (permalink / raw) To: Dan Carpenter; +Cc: linux-rdma, target-devel, Sagi Grimberg That silences the warning, thanks! regards, dan carpenter ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iser-target: Add iSCSI Extensions for RDMA (iSER) target driver 2016-01-06 20:20 ` Nicholas A. Bellinger @ 2016-01-06 20:22 ` Dan Carpenter 0 siblings, 0 replies; 5+ messages in thread From: Dan Carpenter @ 2016-01-06 20:22 UTC (permalink / raw) To: Nicholas A. Bellinger; +Cc: linux-rdma, target-devel, Sagi Grimberg I see now that there is documentation in ib_req_notify_cq(). regards, dan carpenter ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-01-07 15:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-04 21:07 iser-target: Add iSCSI Extensions for RDMA (iSER) target driver Dan Carpenter
2016-01-06 18:24 ` Nicholas A. Bellinger
[not found] ` <1452104665.26125.22.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2016-01-07 15:22 ` Sagi Grimberg
2016-01-06 20:20 ` Nicholas A. Bellinger
2016-01-06 20:22 ` Dan Carpenter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).