Messages in this thread Patch in this message | | | From | Martin Kaiser <> | Subject | [PATCH v3 2/3] PCI: dwc: remove chained IRQ handler and data in one go | Date | Thu, 12 Nov 2020 23:10:09 +0100 |
| |
Call irq_set_chained_handler_and_data() to clear the chained handler and the handler's data under irq_desc->lock.
See also 2cf5a03cb29d ("PCI/keystone: Fix race in installing chained IRQ handler").
Signed-off-by: Martin Kaiser <martin@kaiser.cx> --- v3: - rewrite the commit message again. this is no race condition if we remove the interrupt handler. sorry for the noise. v2: - rewrite the commit message to clarify that this is a bugfix
drivers/pci/controller/dwc/pcie-designware-host.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 44c2a6572199..fc2428165f13 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -258,10 +258,8 @@ int dw_pcie_allocate_domains(struct pcie_port *pp) void dw_pcie_free_msi(struct pcie_port *pp) { - if (pp->msi_irq) { - irq_set_chained_handler(pp->msi_irq, NULL); - irq_set_handler_data(pp->msi_irq, NULL); - } + if (pp->msi_irq) + irq_set_chained_handler_and_data(pp->msi_irq, NULL, NULL); irq_domain_remove(pp->msi_domain); irq_domain_remove(pp->irq_domain); -- 2.20.1
| |