From: Erez Zilber <erezz@voltaire.com>
To: Arne Redlich <arne.redlich@xiranet.com>
Cc: Roland Dreier <rolandd@cisco.com>,
ofa-general <general@lists.openfabrics.org>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] IB/iSER: handle iser_device allocation error gracefully
Date: Tue, 04 Mar 2008 14:11:54 +0200 [thread overview]
Message-ID: <47CD3C8A.20405@voltaire.com> (raw)
In-Reply-To: <87zltgw0ut.fsf@confield.dd.xiranet.com>
Arne Redlich wrote:
> "iser_device" allocation failure is "handled" with a BUG_ON() right
> before dereferencing the NULL-pointer - fix this!
>
I agree with this patch. I'm resending it because it depends on the 1st patch that has changed, so the 2nd patch can be applied over the new 1st patch.
> Signed-off-by: Arne Redlich <arne.redlich@xiranet.com>
> ---
> drivers/infiniband/ulp/iser/iser_verbs.c | 13 +++++++++----
> 1 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
> index 1c0f968..cf70d15 100644
> --- a/drivers/infiniband/ulp/iser/iser_verbs.c
> +++ b/drivers/infiniband/ulp/iser/iser_verbs.c
> @@ -243,7 +243,7 @@ struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
>
> list_for_each_entry(device, &ig.device_list, ig_list)
> if (device->ib_device->node_guid == cma_id->device->node_guid)
> - goto out;
> + goto inc_refcnt;
>
> device = kzalloc(sizeof *device, GFP_KERNEL);
> if (device == NULL)
> @@ -258,9 +258,9 @@ struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
> }
> list_add(&device->ig_list, &ig.device_list);
>
> -out:
> - BUG_ON(device == NULL);
> +inc_refcnt:
> device->refcount++;
> +out:
> mutex_unlock(&ig.device_list_mutex);
> return device;
> }
> @@ -366,6 +366,12 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
> int ret;
>
> device = iser_device_find_by_ib_device(cma_id);
> + if (!device) {
> + iser_err("device lookup/creation failed\n");
> + iser_connect_error(cma_id);
> + return;
> + }
> +
> ib_conn = (struct iser_conn *)cma_id->context;
> ib_conn->device = device;
>
> @@ -374,7 +380,6 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
> iser_err("resolve route failed: %d\n", ret);
> iser_connect_error(cma_id);
> }
> - return;
> }
>
> static void iser_route_handler(struct rdma_cm_id *cma_id)
iser_device" allocation failure is "handled" with a BUG_ON() right
before dereferencing the NULL-pointer - fix this!
Signed-off-by: Arne Redlich <arne.redlich@xiranet.com>
Signed-off-by: Erez Zilber <erezz@voltaire.com>
---
drivers/infiniband/ulp/iser/iser_verbs.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index 768ba69..993f0a8 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -244,7 +244,7 @@ struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
list_for_each_entry(device, &ig.device_list, ig_list)
/* find if there's a match using the node GUID */
if (device->ib_device->node_guid == cma_id->device->node_guid)
- goto out;
+ goto inc_refcnt;
device = kzalloc(sizeof *device, GFP_KERNEL);
if (device == NULL)
@@ -260,9 +260,9 @@ struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
}
list_add(&device->ig_list, &ig.device_list);
-out:
- BUG_ON(device == NULL);
+inc_refcnt:
device->refcount++;
+out:
mutex_unlock(&ig.device_list_mutex);
return device;
}
@@ -368,6 +368,12 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
int ret;
device = iser_device_find_by_ib_device(cma_id);
+ if (!device) {
+ iser_err("device lookup/creation failed\n");
+ iser_connect_error(cma_id);
+ return;
+ }
+
ib_conn = (struct iser_conn *)cma_id->context;
ib_conn->device = device;
@@ -376,7 +382,6 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
iser_err("resolve route failed: %d\n", ret);
iser_connect_error(cma_id);
}
- return;
}
static void iser_route_handler(struct rdma_cm_id *cma_id)
--
1.5.3.6
next prev parent reply other threads:[~2008-03-04 12:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-03 10:36 [PATCH 2/2] IB/iSER: handle iser_device allocation error gracefully Arne Redlich
2008-03-04 12:11 ` Erez Zilber [this message]
2008-03-11 4:18 ` Roland Dreier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47CD3C8A.20405@voltaire.com \
--to=erezz@voltaire.com \
--cc=arne.redlich@xiranet.com \
--cc=general@lists.openfabrics.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rolandd@cisco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.