diff options
author | Jisheng Zhang <Jisheng.Zhang@synaptics.com> | 2019-03-29 11:56:25 +0000 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2019-05-07 08:52:23 -0500 |
commit | 3ebc269c197ee6a9788aeb76ebcc9132814a75e5 (patch) | |
tree | 647cd03e288756d0505e7e9e420b5cfe7df25cc9 /drivers/pci/controller/dwc/pcie-designware-host.c | |
parent | 322f03436692481993d389f539c016d20bb0fa1d (diff) | |
download | lwn-3ebc269c197ee6a9788aeb76ebcc9132814a75e5.tar.gz lwn-3ebc269c197ee6a9788aeb76ebcc9132814a75e5.zip |
PCI: dwc: Fix dw_pcie_free_msi() if msi_irq is invalid
Check msi_irq variable before calling irq_set_chained_handler() and
irq_set_handler_data(), lest we call those functions for an invalid MSI
IRQ.
Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
Diffstat (limited to 'drivers/pci/controller/dwc/pcie-designware-host.c')
-rw-r--r-- | drivers/pci/controller/dwc/pcie-designware-host.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 25087d3c9a82..1040939f45b4 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -298,8 +298,10 @@ int dw_pcie_allocate_domains(struct pcie_port *pp) void dw_pcie_free_msi(struct pcie_port *pp) { - irq_set_chained_handler(pp->msi_irq, NULL); - irq_set_handler_data(pp->msi_irq, NULL); + if (pp->msi_irq) { + irq_set_chained_handler(pp->msi_irq, NULL); + irq_set_handler_data(pp->msi_irq, NULL); + } irq_domain_remove(pp->msi_domain); irq_domain_remove(pp->irq_domain); |