qla2x00_schedule_rport_del() must used _irq[save,restore] spinlocks, because it can...
authorvlnb <vlnb@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Wed, 21 Oct 2009 16:51:48 +0000 (16:51 +0000)
committervlnb <vlnb@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Wed, 21 Oct 2009 16:51:48 +0000 (16:51 +0000)
git-svn-id: https://scst.svn.sourceforge.net/svnroot/scst/trunk@1230 d57e44dd-8a1f-0410-8b47-8ef2f437770f

qla2x00t/qla_os.c

index b02f423..c9c41a2 100644 (file)
@@ -1962,15 +1962,16 @@ qla2x00_schedule_rport_del(struct scsi_qla_host *ha, fc_port_t *fcport,
     int defer)
 {
        struct fc_rport *rport;
+       unsigned long flags;
 
        if (!fcport->rport)
                return;
 
        rport = fcport->rport;
        if (defer) {
-               spin_lock_irq(ha->host->host_lock);
+               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, &ha->dpc_flags);
                qla2xxx_wake_dpc(ha);
        } else {