platform/x86: wmi: Call acpi_wmi_init() later
Subsystems (2)
PATCH 1/1 platform/x86: wmi: Call acpi_wmi_init() later
commit 98b8e4e5c17bf87c1b18ed929472051dab39878c upstream Please apply to 4.9.x and later stable kernel trees (this is as far back as 86d9f48534e8 was applied).
This submission should have followed Option 1, but I failed to Cc:
stable in the original commit.
Calling acpi_wmi_init() at the subsys_initcall() level causes ordering issues to appear on some systems and they are difficult to reproduce, because there is no guaranteed ordering between subsys_initcall() calls, so they may occur in different orders on different systems.
In particular, commit 86d9f48534e8 (mm/slab: fix kmemcg cache creation delayed issue) exposed one of these issues where genl_init() and acpi_wmi_init() are both called at the same initcall level, but the former must run before the latter so as to avoid a NULL pointer dereference.
For this reason, move the acpi_wmi_init() invocation to the initcall_sync level which should still be early enough for things to work correctly in the WMI land.
--- drivers/platform/x86/wmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/platform/x86/wmi.c +1 -1
@@ -1458,5 +1458,5 @@ static void __exit acpi_wmi_exit(void)class_unregister (&wmi_bus_class); } -subsys_initcall (acpi_wmi_init); +subsys_initcall_sync (acpi_wmi_init);module_exit (acpi_wmi_exit);
Signature · 6 lines
2.9.4 -- Darren Hart VMware Open Source Technology Center
Quoted 5 lines · Darren Hart
commit
98b8e4e5c17bf87c1b18ed929472051dab39878cupstream Please apply to 4.9.x and later stable kernel trees (this is as far back as86d9f48534e8was applied).
This submission should have followed Option 1, but I failed to Cc:
stable in the original commit.
Now applied, thanks.
greg k-h