summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorMartin Kaiser <martin@kaiser.cx>2021-01-15 22:24:35 +0100
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>2021-01-18 15:48:06 +0000
commita93c00e5f975f23592895b7e83f35de2d36b7633 (patch)
treecf0f74a083575e486e5e54ef0f3a7529eb9a8c20 /drivers/pci
parentad1cc6b75a79471d14b64c32bf13067659ba2bac (diff)
downloadlinux-stable-a93c00e5f975f23592895b7e83f35de2d36b7633.tar.gz
linux-stable-a93c00e5f975f23592895b7e83f35de2d36b7633.tar.bz2
linux-stable-a93c00e5f975f23592895b7e83f35de2d36b7633.zip
PCI: xgene-msi: Fix race in installing chained irq handler
Fix a race where a pending interrupt could be received and the handler called before the handler's data has been setup, by converting to irq_set_chained_handler_and_data(). See also 2cf5a03cb29d ("PCI/keystone: Fix race in installing chained IRQ handler"). Based on the mail discussion, it seems ok to drop the error handling. Link: https://lore.kernel.org/r/20210115212435.19940-3-martin@kaiser.cx Signed-off-by: Martin Kaiser <martin@kaiser.cx> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/controller/pci-xgene-msi.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/pci/controller/pci-xgene-msi.c b/drivers/pci/controller/pci-xgene-msi.c
index 2470782cb01a..1c34c897a7e2 100644
--- a/drivers/pci/controller/pci-xgene-msi.c
+++ b/drivers/pci/controller/pci-xgene-msi.c
@@ -384,13 +384,9 @@ static int xgene_msi_hwirq_alloc(unsigned int cpu)
if (!msi_group->gic_irq)
continue;
- irq_set_chained_handler(msi_group->gic_irq,
- xgene_msi_isr);
- err = irq_set_handler_data(msi_group->gic_irq, msi_group);
- if (err) {
- pr_err("failed to register GIC IRQ handler\n");
- return -EINVAL;
- }
+ irq_set_chained_handler_and_data(msi_group->gic_irq,
+ xgene_msi_isr, msi_group);
+
/*
* Statically allocate MSI GIC IRQs to each CPU core.
* With 8-core X-Gene v1, 2 MSI GIC IRQs are allocated