mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
powerpc/powernv/pci: Fix underflow and leak issue
commit a39087905af9ffecaa237a918a2c03a04e479934 upstream.
pnv_irq_domain_alloc() allocates interrupts at parent's interrupt
domain. If it fails in the progress, all allocated interrupts are
freed.
The number of successfully allocated interrupts so far is stored
"i". However, "i - 1" interrupts are freed. This is broken:
- One interrupt is not be freed
- If "i" is zero, "i - 1" wraps around
Correct the number of freed interrupts to "i".
Fixes: 0fcfe2247e ("powerpc/powernv/pci: Add MSI domains")
Signed-off-by: Nam Cao <namcao@linutronix.de>
Cc: stable@vger.kernel.org
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/70f8debe8688e0b467367db769b71c20146a836d.1754300646.git.namcao@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4307297a5f
commit
83319fa81e
@@ -1895,7 +1895,7 @@ static int pnv_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
|
||||
return 0;
|
||||
|
||||
out:
|
||||
irq_domain_free_irqs_parent(domain, virq, i - 1);
|
||||
irq_domain_free_irqs_parent(domain, virq, i);
|
||||
msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq, nr_irqs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user