diff options
Diffstat (limited to 'drivers/scsi/libsas/sas_internal.h')
-rw-r--r-- | drivers/scsi/libsas/sas_internal.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h index 137d7e496b6d..a78638df2018 100644 --- a/drivers/scsi/libsas/sas_internal.h +++ b/drivers/scsi/libsas/sas_internal.h | |||
@@ -80,7 +80,7 @@ void sas_hae_reset(struct work_struct *work); | |||
80 | static inline void sas_queue_event(int event, spinlock_t *lock, | 80 | static inline void sas_queue_event(int event, spinlock_t *lock, |
81 | unsigned long *pending, | 81 | unsigned long *pending, |
82 | struct work_struct *work, | 82 | struct work_struct *work, |
83 | struct Scsi_Host *shost) | 83 | struct sas_ha_struct *sas_ha) |
84 | { | 84 | { |
85 | unsigned long flags; | 85 | unsigned long flags; |
86 | 86 | ||
@@ -91,7 +91,12 @@ static inline void sas_queue_event(int event, spinlock_t *lock, | |||
91 | } | 91 | } |
92 | __set_bit(event, pending); | 92 | __set_bit(event, pending); |
93 | spin_unlock_irqrestore(lock, flags); | 93 | spin_unlock_irqrestore(lock, flags); |
94 | scsi_queue_work(shost, work); | 94 | |
95 | spin_lock_irqsave(&sas_ha->state_lock, flags); | ||
96 | if (sas_ha->state != SAS_HA_UNREGISTERED) { | ||
97 | scsi_queue_work(sas_ha->core.shost, work); | ||
98 | } | ||
99 | spin_unlock_irqrestore(&sas_ha->state_lock, flags); | ||
95 | } | 100 | } |
96 | 101 | ||
97 | static inline void sas_begin_event(int event, spinlock_t *lock, | 102 | static inline void sas_begin_event(int event, spinlock_t *lock, |