Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PCI: xilinx: Fix NULL pointer dereference in xilinx_pcie_intr_handler()

f29861aa301c5 ("PCI: xilinx: Switch to msi_create_parent_irq_domain()")
changed xilinx_pcie::msi_domain from child devices' interrupt domain to
Xilinx AXI bridge's interrupt domain.

However, xilinx_pcie_intr_handler() wasn't changed and still reads Xilinx
AXI bridge's interrupt domain from xilinx_pcie::msi_domain->parent. This
pointer is NULL now.

Update xilinx_pcie_intr_handler() to read the correct interrupt domain
pointer.

Fixes: f29861aa301c5 ("PCI: xilinx: Switch to msi_create_parent_irq_domain()")
Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20250811054144.4049448-1-namcao@linutronix.de

authored by

Nam Cao and committed by
Bjorn Helgaas
3f69f2e7 8f5ae30d

+1 -1
+1 -1
drivers/pci/controller/pcie-xilinx.c
··· 400 400 if (val & XILINX_PCIE_RPIFR1_MSI_INTR) { 401 401 val = pcie_read(pcie, XILINX_PCIE_REG_RPIFR2) & 402 402 XILINX_PCIE_RPIFR2_MSG_DATA; 403 - domain = pcie->msi_domain->parent; 403 + domain = pcie->msi_domain; 404 404 } else { 405 405 val = (val & XILINX_PCIE_RPIFR1_INTR_MASK) >> 406 406 XILINX_PCIE_RPIFR1_INTR_SHIFT;