mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 21:23:23 +00:00
[SCSI] qla2xxx: only free_irq() after request_irq() succeeds
If qla2x00_probe_one() fails before calling request_irq() but gets to qla2x00_free_device() then it will mistakenly try to free an irq it didn't request. It's chosing to free based on ha->pdev->irq which is always set. host->irq is set after request_irq() succeeds so let's use that to decide to free or not. This was observed and tested when a silly set of circumstances lead to firmware loading failing on a 2100. Signed-off-by: Zach Brown <zach.brown@oracle.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
1a34456bbb
commit
77347ff755
@ -1700,8 +1700,8 @@ qla2x00_free_device(scsi_qla_host_t *ha)
|
||||
ha->flags.online = 0;
|
||||
|
||||
/* Detach interrupts */
|
||||
if (ha->pdev->irq)
|
||||
free_irq(ha->pdev->irq, ha);
|
||||
if (ha->host->irq)
|
||||
free_irq(ha->host->irq, ha);
|
||||
|
||||
/* release io space registers */
|
||||
if (ha->iobase)
|
||||
|
Loading…
x
Reference in New Issue
Block a user