platform/x86: msi-wmi-platform: Workaround a ACPI firmware bug
authorArmin Wolf <W_Armin@gmx.de>
Mon, 14 Apr 2025 14:04:53 +0000 (16:04 +0200)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 16 Apr 2025 08:15:22 +0000 (11:15 +0300)
commitbaf2f2c2b4c8e1d398173acd4d2fa9131a86b84e
tree7de49249377e1c83593b8ab13668d56bbee5f438
parent912d614ac99e137fd2016777e4b090c46ce84898
platform/x86: msi-wmi-platform: Workaround a ACPI firmware bug

The ACPI byte code inside the ACPI control method responsible for
handling the WMI method calls uses a global buffer for constructing
the return value, yet the ACPI control method itself is not marked
as "Serialized".
This means that calling WMI methods on this WMI device is not
thread-safe, as concurrent WMI method calls will corrupt the global
buffer.

Fix this by serializing the WMI method calls using a mutex.

Cc: stable@vger.kernel.org # 6.x.x: 912d614ac99e: platform/x86: msi-wmi-platform: Rename "data" variable
Fixes: 9c0beb6b29e7 ("platform/x86: wmi: Add MSI WMI Platform driver")
Tested-by: Antheas Kapenekakis <lkml@antheas.dev>
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20250414140453.7691-2-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Documentation/wmi/devices/msi-wmi-platform.rst
drivers/platform/x86/msi-wmi-platform.c