summaryrefslogtreecommitdiffstats
path: root/drivers/irqchip/irq-riscv-aplic-main.c
diff options
context:
space:
mode:
authorSamuel Holland <samuel.holland@sifive.com>2024-11-14 21:01:30 +0100
committerThomas Gleixner <tglx@linutronix.de>2024-11-16 00:45:37 +0100
commit1f181d1cda56c2fbe379c5ace1aa1fac6306669e (patch)
treec48eb258edbf654b78c7cca34905b45b780532b8 /drivers/irqchip/irq-riscv-aplic-main.c
parentgenirq/proc: Use seq_put_decimal_ull_width() for decimal values (diff)
downloadlinux-1f181d1cda56c2fbe379c5ace1aa1fac6306669e.tar.xz
linux-1f181d1cda56c2fbe379c5ace1aa1fac6306669e.zip
irqchip/riscv-aplic: Prevent crash when MSI domain is missing
If the APLIC driver is probed before the IMSIC driver, the parent MSI domain will be missing, which causes a NULL pointer dereference in msi_create_device_irq_domain(). Avoid this by deferring probe until the parent MSI domain is available. Use dev_err_probe() to avoid printing an error message when returning -EPROBE_DEFER. Fixes: ca8df97fe679 ("irqchip/riscv-aplic: Add support for MSI-mode") Signed-off-by: Samuel Holland <samuel.holland@sifive.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/20241114200133.3069460-1-samuel.holland@sifive.com
Diffstat (limited to 'drivers/irqchip/irq-riscv-aplic-main.c')
-rw-r--r--drivers/irqchip/irq-riscv-aplic-main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/irqchip/irq-riscv-aplic-main.c b/drivers/irqchip/irq-riscv-aplic-main.c
index 900e72541db9..93e7c51f944a 100644
--- a/drivers/irqchip/irq-riscv-aplic-main.c
+++ b/drivers/irqchip/irq-riscv-aplic-main.c
@@ -207,7 +207,8 @@ static int aplic_probe(struct platform_device *pdev)
else
rc = aplic_direct_setup(dev, regs);
if (rc)
- dev_err(dev, "failed to setup APLIC in %s mode\n", msi_mode ? "MSI" : "direct");
+ dev_err_probe(dev, rc, "failed to setup APLIC in %s mode\n",
+ msi_mode ? "MSI" : "direct");
#ifdef CONFIG_ACPI
if (!acpi_disabled)