fsl_hypervisor_init() registers the shutdown doorbell IRQ with a NULL
cookie, but both the unload and allocation-failure paths pass dbisr
to free_irq(). The IRQ core cannot find the registered action and
leaves the handler installed.

Pass dbisr to request_irq() so both cleanup paths remove the action.

Fixes: 6db7199407ca ("drivers/virt: introduce Freescale hypervisor management 
driver")
Signed-off-by: Avi Weiss <[email protected]>
---
 drivers/virt/fsl_hypervisor.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c
index f472c94806da7..de52d47a705e3 100644
--- a/drivers/virt/fsl_hypervisor.c
+++ b/drivers/virt/fsl_hypervisor.c
@@ -855,7 +855,7 @@ static int __init fsl_hypervisor_init(void)
                if (of_device_is_compatible(np, "fsl,hv-shutdown-doorbell")) {
                        /* The shutdown doorbell gets its own ISR */
                        ret = request_irq(irq, fsl_hv_shutdown_isr, 0,
-                                         np->name, NULL);
+                                         np->name, dbisr);
                } else if (of_device_is_compatible(np,
                        "fsl,hv-state-change-doorbell")) {
                        /*

base-commit: d89e1d186ec9271bf78e62771779e9fc03bf0fc3
-- 
2.43.0


Reply via email to