aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorSeokmann Ju <seokmann.ju@qlogic.com>2007-01-09 14:37:52 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2007-01-13 14:59:10 -0500
commitbefede3dabd204e9c546cbfbe391b29286c57da2 (patch)
tree4ab7a6e5b16210fd930b722ab62d93c1cf868cc3 /drivers/scsi/qla2xxx
parent3424a65d717ca87ce11acfb03cfd2f713886bfb4 (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/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c4
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)