Commit 9afd4b2d authored by Gustavo Sousa's avatar Gustavo Sousa Committed by Rodrigo Vivi
Browse files

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 <jani.nikula@intel.com>
Reviewed-by: default avatarMatt Atwood <matthew.s.atwood@intel.com>
Signed-off-by: default avatarGustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent a029aeca
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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();
}