diff options
author | Maurizio Lombardi <mlombard@redhat.com> | 2014-06-19 15:05:00 +0200 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-06-25 13:29:30 +0200 |
commit | 9172b763a776bae644d140748a0352fc67277a4c (patch) | |
tree | 8a8c7042552513e090d942d5ddc916aa62bb1f17 /drivers/scsi/bnx2fc | |
parent | fc: ensure scan_work isn't active when freeing fc_rport (diff) | |
download | linux-9172b763a776bae644d140748a0352fc67277a4c.tar.xz linux-9172b763a776bae644d140748a0352fc67277a4c.zip |
bnx2fc: do not scan uninitialized lists in case of error.
In case of of error, the bnx2fc_cmd_mgr_alloc() function will call
the bnx2fc_cmd_mgr_free() to perform the cleanup.
The problem is that in one case the latter may try to scan
some not-yet initialized lists, resulting in a kernel panic.
This patch prevents this from happening by freeing the lists
before calling bnx2fc_cmd_mgr_free().
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Acked-by: Eddie Wai <eddie.wai@broadcom.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/bnx2fc')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_io.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_io.c b/drivers/scsi/bnx2fc/bnx2fc_io.c index 32a5e0a2a669..7bc47fc7c686 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_io.c +++ b/drivers/scsi/bnx2fc/bnx2fc_io.c @@ -282,6 +282,8 @@ struct bnx2fc_cmd_mgr *bnx2fc_cmd_mgr_alloc(struct bnx2fc_hba *hba) arr_sz, GFP_KERNEL); if (!cmgr->free_list_lock) { printk(KERN_ERR PFX "failed to alloc free_list_lock\n"); + kfree(cmgr->free_list); + cmgr->free_list = NULL; goto mem_err; } |