platform/x86: wmi: Fix driver->notify() vs ->probe() race
authorHans de Goede <hdegoede@redhat.com>
Sun, 28 Nov 2021 19:00:28 +0000 (20:00 +0100)
committerHans de Goede <hdegoede@redhat.com>
Mon, 6 Dec 2021 21:33:35 +0000 (22:33 +0100)
commit9918878676a5f9e99b98679f04b9e6c0f5426b0a
treeaeb2410cc8c39fb9cfa8c7e77257a605fee223ef
parenta90b38c58667142ecff2521481ed44286d46b140
platform/x86: wmi: Fix driver->notify() vs ->probe() race

The driver core sets struct device->driver before calling out
to the bus' probe() method, this leaves a window where an ACPI
notify may happen on the WMI object before the driver's
probe() method has completed running, causing e.g. the
driver's notify() callback to get called with drvdata
not yet being set leading to a NULL pointer deref.

At a check for this to the WMI core, ensuring that the notify()
callback is not called before the driver is ready.

Fixes: 1686f5444546 ("platform/x86: wmi: Incorporate acpi_install_notify_handler")
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20211128190031.405620-2-hdegoede@redhat.com
drivers/platform/x86/wmi.c