[ofa-general] Re: [PATCH 1/2] IB/iSER: fix list iteration bug
Erez Zilber
erezz at voltaire.com
Tue Mar 4 22:26:59 PST 2008
Arne Redlich wrote:
> Erez Zilber <erezz at voltaire.com> writes:
>
>
>> Arne Redlich wrote:
>>
>>> The iteration through the list of "iser_device"s during device
>>> lookup/creation is broken - it might result in an infinite loop if more
>>> than 1 HCA is used with iSER. Use list_for_each_entry() instead of the
>>> custom, flawed list iteration code.
>>>
>>> Signed-off-by: Arne Redlich <arne.redlich at xiranet.com>
>>> ---
>>> drivers/infiniband/ulp/iser/iser_verbs.c | 36 ++++++++++++-----------------
>>> 1 files changed, 15 insertions(+), 21 deletions(-)
>>>
>>> diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
>>> index 714b8db..1c0f968 100644
>>> --- a/drivers/infiniband/ulp/iser/iser_verbs.c
>>> +++ b/drivers/infiniband/ulp/iser/iser_verbs.c
>>> @@ -237,33 +237,27 @@ static int iser_free_ib_conn_res(struct iser_conn *ib_conn)
>>> static
>>> struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
>>> {
>>> - struct list_head *p_list;
>>> - struct iser_device *device = NULL;
>>> + struct iser_device *device;
>>>
>>> mutex_lock(&ig.device_list_mutex);
>>>
>>> - p_list = ig.device_list.next;
>>> - while (p_list != &ig.device_list) {
>>> - device = list_entry(p_list, struct iser_device, ig_list);
>>> - /* find if there's a match using the node GUID */
>>> + list_for_each_entry(device, &ig.device_list, ig_list)
>>>
>> I've just added the original comments that are missing in your patch.
>>
>
> Ah well, I probably should've mentioned in the patch description that I
> intentionally removed those comments as I think they're really
> redundant, stating the obvious. But of course I won't insist. :)
>
> Thanks,
> Arne
>
OK and thanks for catching the bugs.
Roland - will you be able to merge these 2 patches for 2.6.25? Both are
bug fixes.
Thanks,
Erez
More information about the general
mailing list