lkml.org 
[lkml]   [2016]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 11/76] aacraid: Fix memory leak in aac_fib_map_free
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>

    commit f88fa79a61726ce9434df9b4aede36961f709f17 upstream.

    aac_fib_map_free() calls pci_free_consistent() without checking that
    dev->hw_fib_va is not NULL and dev->max_fib_size is not zero.If they are
    indeed NULL/0, this will result in a hang as pci_free_consistent() will
    attempt to invalidate cache for the entire 64-bit address space
    (which would take a very long time).

    Fixed by adding a check to make sure that dev->hw_fib_va and
    dev->max_fib_size are not NULL and 0 respectively.

    Fixes: 9ad5204d6 - "[SCSI]aacraid: incorrect dma mapping mask during blinked recover or user initiated reset"
    Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/scsi/aacraid/commsup.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/drivers/scsi/aacraid/commsup.c
    +++ b/drivers/scsi/aacraid/commsup.c
    @@ -83,9 +83,12 @@ static int fib_map_alloc(struct aac_dev

    void aac_fib_map_free(struct aac_dev *dev)
    {
    - pci_free_consistent(dev->pdev,
    - dev->max_fib_size * (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB),
    - dev->hw_fib_va, dev->hw_fib_pa);
    + if (dev->hw_fib_va && dev->max_fib_size) {
    + pci_free_consistent(dev->pdev,
    + (dev->max_fib_size *
    + (dev->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB)),
    + dev->hw_fib_va, dev->hw_fib_pa);
    + }
    dev->hw_fib_va = NULL;
    dev->hw_fib_pa = 0;
    }

    \
     
     \ /
      Last update: 2016-04-10 22:01    [W:2.351 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site