summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorwenxiong@linux.vnet.ibm.com <wenxiong@linux.vnet.ibm.com>2013-03-14 13:52:24 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-04-06 11:25:37 +0100
commit9077a944bc3c8bea45a91dc2caa65e96ac4c5f87 (patch)
treedffa7cf509eb2fdc0533ce6eea2544b9dcc03353 /drivers
parentc4ee22a3708d54d8fb5ee8a23ca08e74abcaedfd (diff)
downloadlinux-9077a944bc3c8bea45a91dc2caa65e96ac4c5f87.tar.gz
linux-9077a944bc3c8bea45a91dc2caa65e96ac4c5f87.tar.bz2
linux-9077a944bc3c8bea45a91dc2caa65e96ac4c5f87.zip
[SCSI] ipr: dlpar failed when adding an adapter back
Reinitialize resource queue prior to freeing resource entries to ensure they are not referenced. This fixes an issue with target_destoy accessing memory after it was freed. Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com> Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/ipr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 21e0a0ae43a8..2197b57fb225 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -9728,6 +9728,7 @@ static void __ipr_remove(struct pci_dev *pdev)
spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
flush_work(&ioa_cfg->work_q);
+ INIT_LIST_HEAD(&ioa_cfg->used_res_q);
spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
spin_lock(&ipr_driver_lock);