irqdomain/treewide: Free firmware node after domain removal
authorJon Derrick <jonathan.derrick@intel.com>
Tue, 21 Jul 2020 20:26:09 +0000 (14:26 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Aug 2020 06:24:18 +0000 (08:24 +0200)
commit94bab54503b65810226a76b1f75c1a602cc2de10
tree11f6c0c2ac41ec04e20a0e4b9dcb0620c2d85dae
parent841e8bef3b6475b7858e6472e83f886fdc4b6126
irqdomain/treewide: Free firmware node after domain removal

commit ec0160891e387f4771f953b888b1fe951398e5d9 upstream.

Commit 711419e504eb ("irqdomain: Add the missing assignment of
domain->fwnode for named fwnode") unintentionally caused a dangling pointer
page fault issue on firmware nodes that were freed after IRQ domain
allocation. Commit e3beca48a45b fixed that dangling pointer issue by only
freeing the firmware node after an IRQ domain allocation failure. That fix
no longer frees the firmware node immediately, but leaves the firmware node
allocated after the domain is removed.

The firmware node must be kept around through irq_domain_remove, but should be
freed it afterwards.

Add the missing free operations after domain removal where where appropriate.

Fixes: e3beca48a45b ("irqdomain/treewide: Keep firmware node unconditionally allocated")
Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com> # drivers/pci
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/1595363169-7157-1-git-send-email-jonathan.derrick@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/mips/pci/pci-xtalk-bridge.c
arch/x86/kernel/apic/io_apic.c
drivers/iommu/intel_irq_remapping.c
drivers/mfd/ioc3.c
drivers/pci/controller/vmd.c