mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
Miscellaneous irqchip driver fixes:
- Fix indexing bug in the Crossbar irqchip driver (Bhargav Joshi)
- Fix a parent domain resource leak in the Crossbar irqchip
driver (Bhargav Joshi)
- Fix resource leak in the ImgTec PDC irqchip driver's
exit logic (Qingshuang Fu)
- Fix macro name in comment block (Ethan Nelson-Moore)
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-----BEGIN PGP SIGNATURE-----
iQJFBAABCgAvFiEEBpT5eoXrXCwVQwEKEnMQ0APhK1gFAmo6uY4RHG1pbmdvQGtl
cm5lbC5vcmcACgkQEnMQ0APhK1iKog//dYOjM3UyRcecFWMyadpr0azxdz0PxJ1C
m3xWcoMryId/TTxW2LBCbefNEDUeOqBDvJuTeBTUD0TJGSWojwv9UkgPejUeOh5F
gq3GhC09/EgxTW5wKQHdr063ThwG5IJ5gWWIBHWWg1fPRlwxd+KK+20k+gEC/rYa
Q09KxytygS+NN5JsQRH8XIc+4lTFrSwhg6aFp3pyveHSlQ+qlo0c4t71xywAEA/6
llw2i1915XMeRyJug4S8iMQfHBxbdVzNKxyWqwcHH1f6D9IC/Ja/JttEBnMNKXUG
wlhZttUicwvnF0nPWWHsQkU+ecw0zsLqHg48Fk8OYswFPbxtwjCoAstMVrCDSLCH
iwuQzWzlBKjTqtYIyaii0fjcsEj/iDQrVlMT54obLleVNn6IdtxiAqbbGv6nmMoV
25id7IWd8JrKQWbflFnw6S55+/Ja12OnJmc285khwmInzvqRFwo+B8kZqvtJ0YJa
JPumM1QoMum9Hv9R19PtBdWpzO4fj7lhGx+lUjH7UKknf0ZSme+zhtd7B42I1JJ0
R5EKbC+5G6Rkbih/4ymL163dZH7//RL749Y3BGmg5fYURrdByqPSGRR1B9GZL+Tr
+ki6hzDLNwSQ9qFHxeDplLJAzbaMrvIKTTFKhAzq6JWeJ5Ygkoyv+IjxmRLzmvMk
CZNe1FsUV/U=
=cDRs
-----END PGP SIGNATURE-----
Merge tag 'irq-urgent-2026-06-23' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull misc irqchip driver fixes from Ingo Molnar:
- Fix indexing bug in the Crossbar irqchip driver (Bhargav Joshi)
- Fix a parent domain resource leak in the Crossbar irqchip driver
(Bhargav Joshi)
- Fix resource leak in the ImgTec PDC irqchip driver's exit logic
(Qingshuang Fu)
- Fix macro name in comment block (Ethan Nelson-Moore)
* tag 'irq-urgent-2026-06-23' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
genirq/msi: Correct CONFIG_PCI_MSI_ARCH_FALLBACKS macro name in comment
irqchip/imgpdc: Fix resource leak, add missing chained handler cleanup on remove
irqchip/crossbar: Fix parent domain resource leak
irqchip/crossbar: Use correct index in crossbar_domain_free()
This commit is contained in:
commit
b59e4cae34
|
|
@ -158,11 +158,17 @@ static void crossbar_domain_free(struct irq_domain *domain, unsigned int virq,
|
|||
for (i = 0; i < nr_irqs; i++) {
|
||||
struct irq_data *d = irq_domain_get_irq_data(domain, virq + i);
|
||||
|
||||
/*
|
||||
* irq_map[] is indexed by GIC SPI number. The parent domain's
|
||||
* hwirq contains the GIC interrupt number (GIC SPI +
|
||||
* GIC_IRQ_START).
|
||||
*/
|
||||
cb->irq_map[d->parent_data->hwirq - GIC_IRQ_START] = IRQ_FREE;
|
||||
cb->write(d->parent_data->hwirq - GIC_IRQ_START, cb->safe_map);
|
||||
irq_domain_reset_irq_data(d);
|
||||
cb->irq_map[d->hwirq] = IRQ_FREE;
|
||||
cb->write(d->hwirq, cb->safe_map);
|
||||
}
|
||||
raw_spin_unlock(&cb->lock);
|
||||
irq_domain_free_irqs_parent(domain, virq, nr_irqs);
|
||||
}
|
||||
|
||||
static int crossbar_domain_translate(struct irq_domain *d,
|
||||
|
|
|
|||
|
|
@ -378,6 +378,7 @@ static int pdc_intc_probe(struct platform_device *pdev)
|
|||
dev_err(&pdev->dev, "cannot add IRQ domain\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
priv->domain->flags |= IRQ_DOMAIN_FLAG_DESTROY_GC;
|
||||
|
||||
/*
|
||||
* Set up 2 generic irq chips with 2 chip types.
|
||||
|
|
@ -465,6 +466,11 @@ static void pdc_intc_remove(struct platform_device *pdev)
|
|||
{
|
||||
struct pdc_intc_priv *priv = platform_get_drvdata(pdev);
|
||||
|
||||
for (unsigned int i = 0; i < priv->nr_perips; ++i)
|
||||
irq_set_chained_handler_and_data(priv->perip_irqs[i], NULL, NULL);
|
||||
|
||||
irq_set_chained_handler_and_data(priv->syswake_irq, NULL, NULL);
|
||||
|
||||
irq_domain_remove(priv->domain);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -591,7 +591,7 @@ void msi_device_destroy_sysfs(struct device *dev)
|
|||
msi_for_each_desc(desc, dev, MSI_DESC_ALL)
|
||||
msi_sysfs_remove_desc(dev, desc);
|
||||
}
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACK || CONFIG_PCI_XEN */
|
||||
#endif /* CONFIG_PCI_MSI_ARCH_FALLBACKS || CONFIG_PCI_XEN */
|
||||
#else /* CONFIG_SYSFS */
|
||||
static inline int msi_sysfs_create_group(struct device *dev) { return 0; }
|
||||
static inline int msi_sysfs_populate_desc(struct device *dev, struct msi_desc *desc) { return 0; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user