Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 542bce1f authored by Dan Carpenter's avatar Dan Carpenter Committed by James Bottomley
Browse files

[SCSI] qla2xxx: locking problem in qla2x00_init_rings()



IRQs are already disabled here so we don't need to disable them again.
But more importantly, the spin_lock_irqsave() overwrites "flags" and
that breaks things when we want to re-enable the IRQs when we call
spin_unlock_irqrestore(&ha->hardware_lock, flags);

Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
Signed-off-by: default avatarMadhuranath Iyengar <Madhu.Iyengar@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent b8479178
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -1818,14 +1818,14 @@ qla2x00_init_rings(scsi_qla_host_t *vha)
		qla2x00_init_response_q_entries(rsp);
		qla2x00_init_response_q_entries(rsp);
	}
	}


	spin_lock_irqsave(&ha->vport_slock, flags);
	spin_lock(&ha->vport_slock);
	/* Clear RSCN queue. */
	/* Clear RSCN queue. */
	list_for_each_entry(vp, &ha->vp_list, list) {
	list_for_each_entry(vp, &ha->vp_list, list) {
		vp->rscn_in_ptr = 0;
		vp->rscn_in_ptr = 0;
		vp->rscn_out_ptr = 0;
		vp->rscn_out_ptr = 0;
	}
	}


	spin_unlock_irqrestore(&ha->vport_slock, flags);
	spin_unlock(&ha->vport_slock);


	ha->isp_ops->config_rings(vha);
	ha->isp_ops->config_rings(vha);