From 9afd4b2d2a8df9023849ddd25d5e064b6555ee34 Mon Sep 17 00:00:00 2001 From: Gustavo Sousa Date: Thu, 11 May 2023 16:48:22 -0300 Subject: [PATCH] drm/xe: Call exit functions when xe_register_pci_driver() fails Move xe_register_pci_driver() and xe_unregister_pci_driver() to init_funcs to make sure that exit functions are also called when xe_register_pci_driver() fails. Note that this also allows adding init functions to be run after xe_register_pci_driver(). v2: - Move functions to init_funcs instead of having a special case for xe_register_pci_driver(). (Jani) Cc: Jani Nikula Reviewed-by: Matt Atwood Signed-off-by: Gustavo Sousa Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/xe/xe_module.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c index e2a61aaf50b6..496a9001dc3e 100644 --- a/drivers/gpu/drm/xe/xe_module.c +++ b/drivers/gpu/drm/xe/xe_module.c @@ -45,6 +45,10 @@ static const struct init_funcs init_funcs[] = { .init = xe_sched_job_module_init, .exit = xe_sched_job_module_exit, }, + { + .init = xe_register_pci_driver, + .exit = xe_unregister_pci_driver, + }, }; static int __init xe_init(void) @@ -60,15 +64,13 @@ static int __init xe_init(void) } } - return xe_register_pci_driver(); + return 0; } static void __exit xe_exit(void) { int i; - xe_unregister_pci_driver(); - for (i = ARRAY_SIZE(init_funcs) - 1; i >= 0; i--) init_funcs[i].exit(); }