Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752151AbeACLui (ORCPT + 1 other); Wed, 3 Jan 2018 06:50:38 -0500 Received: from cloudserver094114.home.pl ([79.96.170.134]:43288 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751151AbeACLug (ORCPT ); Wed, 3 Jan 2018 06:50:36 -0500 From: "Rafael J. Wysocki" To: Andy Shevchenko , Darren Hart Cc: Jonathan McDowell , linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Joonsoo Kim , platform-driver-x86@vger.kernel.org, Andy Lutomirski Subject: [PATCH] ACPI / WMI: Call acpi_wmi_init() later Date: Wed, 03 Jan 2018 12:49:29 +0100 Message-ID: <2601877.IhOx20xkUK@aspire.rjw.lan> In-Reply-To: <20171208151159.urdcrzl5qpfd6jnu@earth.li> References: <20171208151159.urdcrzl5qpfd6jnu@earth.li> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: From: Rafael J. Wysocki 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. Link: https://marc.info/?t=151274596700002&r=1&w=2 Reported-by: Jonathan McDowell Reported-by: Joonsoo Kim Tested-by: Jonathan McDowell Signed-off-by: Rafael J. Wysocki --- drivers/platform/x86/wmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-pm/drivers/platform/x86/wmi.c =================================================================== --- linux-pm.orig/drivers/platform/x86/wmi.c +++ linux-pm/drivers/platform/x86/wmi.c @@ -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);