diff options
author | Saurav Kashyap <saurav.kashyap@qlogic.com> | 2011-08-16 14:31:46 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-08-29 03:14:55 -0400 |
commit | c8582ad95bcbdf46f799d310d7dfee73d941c2f4 (patch) | |
tree | 82004ba6ad4b678a74f66ffacd8b40676a13f7a4 /drivers/scsi/qla2xxx | |
parent | 999916dc59dc2fb0de221ad607d58cdc88fcbbe4 (diff) |
[SCSI] qla2xxx: Prevent CPU lockups when "ql2xdontresethba" module param is set.
Driver is not releasing the lock if ql2xdontresethba is set, this might lead
to a lockup.
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_nx.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_nx.c b/drivers/scsi/qla2xxx/qla_nx.c index b03c86b7a989..fe9db224794d 100644 --- a/drivers/scsi/qla2xxx/qla_nx.c +++ b/drivers/scsi/qla2xxx/qla_nx.c | |||
@@ -3761,10 +3761,15 @@ qla82xx_device_state_handler(scsi_qla_host_t *vha) | |||
3761 | qla82xx_idc_lock(ha); | 3761 | qla82xx_idc_lock(ha); |
3762 | break; | 3762 | break; |
3763 | case QLA82XX_DEV_NEED_RESET: | 3763 | case QLA82XX_DEV_NEED_RESET: |
3764 | if (!ql2xdontresethba) | 3764 | if (!ql2xdontresethba) |
3765 | qla82xx_need_reset_handler(vha); | 3765 | qla82xx_need_reset_handler(vha); |
3766 | else { | ||
3767 | qla82xx_idc_unlock(ha); | ||
3768 | msleep(1000); | ||
3769 | qla82xx_idc_lock(ha); | ||
3770 | } | ||
3766 | dev_init_timeout = jiffies + | 3771 | dev_init_timeout = jiffies + |
3767 | (ha->nx_dev_init_timeout * HZ); | 3772 | (ha->nx_dev_init_timeout * HZ); |
3768 | break; | 3773 | break; |
3769 | case QLA82XX_DEV_NEED_QUIESCENT: | 3774 | case QLA82XX_DEV_NEED_QUIESCENT: |
3770 | qla82xx_need_qsnt_handler(vha); | 3775 | qla82xx_need_qsnt_handler(vha); |