qla2xxx: Fix shost use-after-free on device removal
Once calling scsi_host_put, be careful to not access qla_hw_data through
the Scsi_Host private data (ie, scsi_qla_host base_vha).
Fixes: fe1b806f4f
("qla2xxx: Refactor shutdown code so some functionality can be reused")
Cc: stable@vger.kernel.org # 3.14, 3.15, 3.16
Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
c01a8bc084
commit
db7157d4cf
|
@ -3119,10 +3119,8 @@ qla2x00_unmap_iobases(struct qla_hw_data *ha)
|
|||
}
|
||||
|
||||
static void
|
||||
qla2x00_clear_drv_active(scsi_qla_host_t *vha)
|
||||
qla2x00_clear_drv_active(struct qla_hw_data *ha)
|
||||
{
|
||||
struct qla_hw_data *ha = vha->hw;
|
||||
|
||||
if (IS_QLA8044(ha)) {
|
||||
qla8044_idc_lock(ha);
|
||||
qla8044_clear_drv_active(ha);
|
||||
|
@ -3193,7 +3191,7 @@ qla2x00_remove_one(struct pci_dev *pdev)
|
|||
|
||||
scsi_host_put(base_vha->host);
|
||||
|
||||
qla2x00_clear_drv_active(base_vha);
|
||||
qla2x00_clear_drv_active(ha);
|
||||
|
||||
qla2x00_unmap_iobases(ha);
|
||||
|
||||
|
|
Loading…
Reference in New Issue