summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorJoe Lawrence2014-08-26 23:12:29 +0200
committerChristoph Hellwig2014-09-16 18:10:01 +0200
commit6b3839790b16adffbbe2f5967e149562a5a603e8 (patch)
treec9939898a1f8ddfdc3cbe6815d42aada3b2ee1dd /drivers/scsi/qla2xxx/qla_os.c
parentqla2xxx: Prevent removal and board_disable race (diff)
downloadkernel-qcow2-linux-6b3839790b16adffbbe2f5967e149562a5a603e8.tar.gz
kernel-qcow2-linux-6b3839790b16adffbbe2f5967e149562a5a603e8.tar.xz
kernel-qcow2-linux-6b3839790b16adffbbe2f5967e149562a5a603e8.zip
qla2xxx: Prevent probe and board_disable race
The PCI register read checking introduced in commit fe1b806f4f71 ("qla2xxx: Disable adapter when we encounter a PCI disconnect") is active during driver probe. Hold off scheduling any board removal until the driver probe has completed. This ensures that the the board_disable work structure is initialized and more importantly, avoids racing qla2x00_probe_one. 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>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 84d4df6e6221..f93785957b72 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2632,6 +2632,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
}
pci_set_drvdata(pdev, base_vha);
+ set_bit(PFLG_DRIVER_PROBING, &base_vha->pci_flags);
host = base_vha->host;
base_vha->req = req;
@@ -2928,6 +2929,7 @@ skip_dpc:
qlt_add_target(ha, base_vha);
+ clear_bit(PFLG_DRIVER_PROBING, &base_vha->pci_flags);
return 0;
probe_init_failed: