diff options
author | Seokmann Ju <seokmann.ju@qlogic.com> | 2007-01-09 14:37:52 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-01-13 14:59:10 -0500 |
commit | befede3dabd204e9c546cbfbe391b29286c57da2 (patch) | |
tree | 4ab7a6e5b16210fd930b722ab62d93c1cf868cc3 /drivers | |
parent | 3424a65d717ca87ce11acfb03cfd2f713886bfb4 (diff) |
[SCSI] qla2xxx: correct locking while call starget_for_each_device()
Removed spin_unlock_irq()/spin_lock_irq() pairs surrounding
starget_for_each_device() calls.
As Matthew W. pointed out, starget_for_each_device() can be called under
a spinlock being held.
The change has been tested and verified on qla2xxx.ko module.
Thanks Matthew W. and Hisashi H. for help.
Signed-off-by: Andrew Vasquez <Andrew.vasquez@qlogic.com>
Signed-off-by: Seokmann Ju <Seokmann.ju@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index d3b6df4d55c8..b95fcb2c065e 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -650,10 +650,8 @@ qla2x00_ramp_up_queue_depth(scsi_qla_host_t *ha, srb_t *sp) | |||
650 | fcport->last_queue_full + ql2xqfullrampup * HZ)) | 650 | fcport->last_queue_full + ql2xqfullrampup * HZ)) |
651 | return; | 651 | return; |
652 | 652 | ||
653 | spin_unlock_irq(&ha->hardware_lock); | ||
654 | starget_for_each_device(sdev->sdev_target, fcport, | 653 | starget_for_each_device(sdev->sdev_target, fcport, |
655 | qla2x00_adjust_sdev_qdepth_up); | 654 | qla2x00_adjust_sdev_qdepth_up); |
656 | spin_lock_irq(&ha->hardware_lock); | ||
657 | } | 655 | } |
658 | 656 | ||
659 | /** | 657 | /** |
@@ -923,10 +921,8 @@ qla2x00_status_entry(scsi_qla_host_t *ha, void *pkt) | |||
923 | 921 | ||
924 | /* Adjust queue depth for all luns on the port. */ | 922 | /* Adjust queue depth for all luns on the port. */ |
925 | fcport->last_queue_full = jiffies; | 923 | fcport->last_queue_full = jiffies; |
926 | spin_unlock_irq(&ha->hardware_lock); | ||
927 | starget_for_each_device(cp->device->sdev_target, | 924 | starget_for_each_device(cp->device->sdev_target, |
928 | fcport, qla2x00_adjust_sdev_qdepth_down); | 925 | fcport, qla2x00_adjust_sdev_qdepth_down); |
929 | spin_lock_irq(&ha->hardware_lock); | ||
930 | break; | 926 | break; |
931 | } | 927 | } |
932 | if (lscsi_status != SS_CHECK_CONDITION) | 928 | if (lscsi_status != SS_CHECK_CONDITION) |