Skip to contentSkip to conversation

qla2xxx: Fix for incorrect unconditionally interrupts enabling on IRQ context

PATCH New Vladislav Bolkhovitin 1 participant 1 message Dec 10, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 qla2xxx: Fix for incorrect unconditionally interrupts enabling on IRQ context

A rather trivial patch. Function qla2x00_schedule_rport_del() can be called on IRQ context, so it can't unconditionally enable interrupts. Spotted by lockdep.

This patch is against 2.6.27.2, but applies also on 2.6.28-rc7.

 qla_os.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/scsi/qla2xxx/qla_os.c +3 -2
diff -upr linux-2.6.27.2/drivers/scsi/qla2xxx/qla_os.c linux-2.6.27.2/drivers/scsi/qla2xxx/qla_os.c
@@ -1862,9 +1885,10 @@ qla2x00_schedule_rport_del(struct scsi_q
 
 	rport = fcport->rport;
 	if (defer) {
-		spin_lock_irq(ha->host->host_lock);
+		unsigned long flags;
+		spin_lock_irqsave(ha->host->host_lock, flags);
 		fcport->drport = rport;
-		spin_unlock_irq(ha->host->host_lock);
+		spin_unlock_irqrestore(ha->host->host_lock, flags);
 		set_bit(FCPORT_UPDATE_NEEDED, &pha->dpc_flags);
 		qla2xxx_wake_dpc(pha);
 	} else