lkml.org 
[lkml]   [2009]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 053/100] SCSI: libiscsi: fix iscsi pool error path
    -stable review patch.  If anyone has any objections, please let us know.
    ---------------------

    From: Jean Delvare <jdelvare@suse.de>

    upstream commit: f474a37bc48667595b5653a983b635c95ed82a3b

    Memory freeing in iscsi_pool_free() looks wrong to me. Either q->pool
    can be NULL and this should be tested before dereferencing it, or it
    can't be NULL and it shouldn't be tested at all. As far as I can see,
    the only case where q->pool is NULL is on early error in
    iscsi_pool_init(). One possible way to fix the bug is thus to not
    call iscsi_pool_free() in this case (nothing needs to be freed anyway)
    and then we can get rid of the q->pool check.

    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    ---
    drivers/scsi/libiscsi.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    --- a/drivers/scsi/libiscsi.c
    +++ b/drivers/scsi/libiscsi.c
    @@ -1944,7 +1944,7 @@ iscsi_pool_init(struct iscsi_pool *q, in
    num_arrays++;
    q->pool = kzalloc(num_arrays * max * sizeof(void*), GFP_KERNEL);
    if (q->pool == NULL)
    - goto enomem;
    + return -ENOMEM;

    q->queue = kfifo_init((void*)q->pool, max * sizeof(void*),
    GFP_KERNEL, NULL);
    @@ -1979,8 +1979,7 @@ void iscsi_pool_free(struct iscsi_pool *

    for (i = 0; i < q->max; i++)
    kfree(q->pool[i]);
    - if (q->pool)
    - kfree(q->pool);
    + kfree(q->pool);
    kfree(q->queue);
    }
    EXPORT_SYMBOL_GPL(iscsi_pool_free);


    \
     
     \ /
      Last update: 2009-04-23 10:03    [W:6.079 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site