]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86: acer-wmi: Fix missing capability check
authorArmin Wolf <W_Armin@gmx.de>
Thu, 8 Jan 2026 16:45:27 +0000 (17:45 +0100)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 20 Jan 2026 15:10:56 +0000 (17:10 +0200)
During the rework of the fan behavior control code in commit
d8e8362b09d3 ("platform/x86: acer-wmi: Fix setting of fan behavior"),
acer_toggle_turbo() was changed to use WMID_gaming_set_fan_behavior()
instead of WMID_gaming_set_u64() when switching the fans to turbo
mode. The new function however does not check if the necessary
capability (ACER_CAP_TURBO_FAN) is actually enabled on a given
machine, causing the driver to potentially access unsupported
features.

Fix this by manually checking if ACER_CAP_TURBO_FAN is enabled
on a given machine before changing the fan mode.

Cc: stable@vger.kernel.org
Fixes: d8e8362b09d3 ("platform/x86: acer-wmi: Fix setting of fan behavior")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://patch.msgid.link/20260108164716.14376-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>
drivers/platform/x86/acer-wmi.c

index 54ca3edf532ade292a92a3ef9b2a22ebc6d029f2..e0eaaefb13d04c45a0b6f264d0278281a6119282 100644 (file)
@@ -2070,7 +2070,8 @@ static int acer_toggle_turbo(void)
                WMID_gaming_set_u64(0x1, ACER_CAP_TURBO_LED);
 
                /* Set FAN mode to auto */
-               WMID_gaming_set_fan_mode(ACER_WMID_FAN_MODE_AUTO);
+               if (has_cap(ACER_CAP_TURBO_FAN))
+                       WMID_gaming_set_fan_mode(ACER_WMID_FAN_MODE_AUTO);
 
                /* Set OC to normal */
                if (has_cap(ACER_CAP_TURBO_OC)) {
@@ -2084,7 +2085,8 @@ static int acer_toggle_turbo(void)
                WMID_gaming_set_u64(0x10001, ACER_CAP_TURBO_LED);
 
                /* Set FAN mode to turbo */
-               WMID_gaming_set_fan_mode(ACER_WMID_FAN_MODE_TURBO);
+               if (has_cap(ACER_CAP_TURBO_FAN))
+                       WMID_gaming_set_fan_mode(ACER_WMID_FAN_MODE_TURBO);
 
                /* Set OC to turbo mode */
                if (has_cap(ACER_CAP_TURBO_OC)) {