summaryrefslogtreecommitdiff
path: root/drivers/scsi/qla2xxx/qla_isr.c
diff options
context:
space:
mode:
authorJoe Lawrence <joe.lawrence@stratus.com>2014-08-26 17:12:29 -0400
committerChristoph Hellwig <hch@lst.de>2014-09-16 09:10:01 -0700
commit6b3839790b16adffbbe2f5967e149562a5a603e8 (patch)
treec9939898a1f8ddfdc3cbe6815d42aada3b2ee1dd /drivers/scsi/qla2xxx/qla_isr.c
parentbeb9e315e6e0d8d1d7d3a79d2e5d4664aa8f8796 (diff)
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_isr.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 341c64daa959..a0992bfab7bf 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -118,7 +118,8 @@ qla2x00_check_reg32_for_disconnect(scsi_qla_host_t *vha, uint32_t reg)
/* Check for PCI disconnection */
if (reg == 0xffffffff) {
if (!test_and_set_bit(PFLG_DISCONNECTED, &vha->pci_flags) &&
- !test_bit(PFLG_DRIVER_REMOVING, &vha->pci_flags)) {
+ !test_bit(PFLG_DRIVER_REMOVING, &vha->pci_flags) &&
+ !test_bit(PFLG_DRIVER_PROBING, &vha->pci_flags)) {
/*
* Schedule this (only once) on the default system
* workqueue so that all the adapter workqueues and the