]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
irqchip/riscv-aplic: Do not clear ACPI dependencies on probe failure
authorJessica Liu <liu.xuemei1@zte.com.cn>
Tue, 10 Mar 2026 06:16:00 +0000 (14:16 +0800)
committerThomas Gleixner <tglx@kernel.org>
Tue, 10 Mar 2026 17:42:33 +0000 (18:42 +0100)
aplic_probe() calls acpi_dev_clear_dependencies() unconditionally at the
end, even when the preceding setup (MSI or direct mode) has failed. This is
incorrect because if the device failed to probe, it should not be
considered as active and should not clear dependencies for other devices
waiting on it.

Fix this by returning immediately when the setup fails, skipping the ACPI
dependency cleanup. Also, explicitly return 0 on success instead of relying
on the value of 'rc' to make the success path clear.

Fixes: 5122e380c23b ("irqchip/riscv-aplic: Add ACPI support")
Signed-off-by: Jessica Liu <liu.xuemei1@zte.com.cn>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260310141600411Fu8H8-GXOOgKISU48Tjgx@zte.com.cn
drivers/irqchip/irq-riscv-aplic-main.c

index 4495ca26abf5712d02537296180ad8c2341ef51b..8775f188ea4fc9ec2d7593762fbeaf259e1f8181 100644 (file)
@@ -372,18 +372,21 @@ static int aplic_probe(struct platform_device *pdev)
                rc = aplic_msi_setup(dev, regs);
        else
                rc = aplic_direct_setup(dev, regs);
-       if (rc)
+
+       if (rc) {
                dev_err_probe(dev, rc, "failed to setup APLIC in %s mode\n",
                              msi_mode ? "MSI" : "direct");
-       else
-               register_syscore(&aplic_syscore);
+               return rc;
+       }
+
+       register_syscore(&aplic_syscore);
 
 #ifdef CONFIG_ACPI
        if (!acpi_disabled)
                acpi_dev_clear_dependencies(ACPI_COMPANION(dev));
 #endif
 
-       return rc;
+       return 0;
 }
 
 static const struct of_device_id aplic_match[] = {