]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe: Fix error handling in xe_irq_install()
authorLucas De Marchi <lucas.demarchi@intel.com>
Thu, 13 Feb 2025 19:28:59 +0000 (11:28 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 14 Feb 2025 19:42:54 +0000 (11:42 -0800)
When devm_add_action_or_reset() fails, it already calls the function
passed as parameter and that function is already free'ing the irqs.
Drop the goto and just return.

The caller, xe_device_probe(), should also do the same thing instead of
wrongly doing `goto err` and calling the unrelated xe_display_fini()
function.

Fixes: 14d25d8d684d ("drm/xe: change old msi irq api to a new one")
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250213192909.996148-3-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_irq.c

index bf092e6391c7dc23e0f9f2fac46daea4db6ab334..5362d3174b06093a5f58b154fdf379da42410bdf 100644 (file)
@@ -775,19 +775,7 @@ int xe_irq_install(struct xe_device *xe)
 
        xe_irq_postinstall(xe);
 
-       err = devm_add_action_or_reset(xe->drm.dev, irq_uninstall, xe);
-       if (err)
-               goto free_irq_handler;
-
-       return 0;
-
-free_irq_handler:
-       if (xe_device_has_msix(xe))
-               xe_irq_msix_free(xe);
-       else
-               xe_irq_msi_free(xe);
-
-       return err;
+       return devm_add_action_or_reset(xe->drm.dev, irq_uninstall, xe);
 }
 
 static void xe_irq_msi_synchronize_irq(struct xe_device *xe)