mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
platform/x86: hp-wmi: fix ignored return values in fan settings
hp_wmi_get_fan_count_userdefine_trigger() can fail, but its return
value was silently ignored in hp_wmi_apply_fan_settings() for
PWM_MODE_MAX/AUTO. Propagate these errors consistently.
Additionally, handle the return value of hp_wmi_apply_fan_settings()
in its callers by adding appropriate warnings on failure, and remove an
unreachable "return 0" at the end of the function.
Fixes: 46be1453e6 ("platform/x86: hp-wmi: add manual fan control for Victus S models")
Signed-off-by: Emre Cecanpunar <emreleno@gmail.com>
Link: https://patch.msgid.link/20260407142515.20683-2-emreleno@gmail.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
ec42739879
commit
7265b57fbc
|
|
@ -2353,8 +2353,11 @@ static int hp_wmi_apply_fan_settings(struct hp_wmi_hwmon_priv *priv)
|
|||
|
||||
switch (priv->mode) {
|
||||
case PWM_MODE_MAX:
|
||||
if (is_victus_s_thermal_profile())
|
||||
hp_wmi_get_fan_count_userdefine_trigger();
|
||||
if (is_victus_s_thermal_profile()) {
|
||||
ret = hp_wmi_get_fan_count_userdefine_trigger();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
ret = hp_wmi_fan_speed_max_set(1);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
|
@ -2372,7 +2375,9 @@ static int hp_wmi_apply_fan_settings(struct hp_wmi_hwmon_priv *priv)
|
|||
return 0;
|
||||
case PWM_MODE_AUTO:
|
||||
if (is_victus_s_thermal_profile()) {
|
||||
hp_wmi_get_fan_count_userdefine_trigger();
|
||||
ret = hp_wmi_get_fan_count_userdefine_trigger();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = hp_wmi_fan_speed_max_reset(priv);
|
||||
} else {
|
||||
ret = hp_wmi_fan_speed_max_set(0);
|
||||
|
|
@ -2385,8 +2390,6 @@ static int hp_wmi_apply_fan_settings(struct hp_wmi_hwmon_priv *priv)
|
|||
/* shouldn't happen */
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static umode_t hp_wmi_hwmon_is_visible(const void *data,
|
||||
|
|
@ -2528,6 +2531,7 @@ static void hp_wmi_hwmon_keep_alive_handler(struct work_struct *work)
|
|||
{
|
||||
struct delayed_work *dwork;
|
||||
struct hp_wmi_hwmon_priv *priv;
|
||||
int ret;
|
||||
|
||||
dwork = to_delayed_work(work);
|
||||
priv = container_of(dwork, struct hp_wmi_hwmon_priv, keep_alive_dwork);
|
||||
|
|
@ -2535,7 +2539,10 @@ static void hp_wmi_hwmon_keep_alive_handler(struct work_struct *work)
|
|||
* Re-apply the current hwmon context settings.
|
||||
* NOTE: hp_wmi_apply_fan_settings will handle the re-scheduling.
|
||||
*/
|
||||
hp_wmi_apply_fan_settings(priv);
|
||||
ret = hp_wmi_apply_fan_settings(priv);
|
||||
if (ret)
|
||||
pr_warn_ratelimited("keep-alive failed to refresh fan settings: %d\n",
|
||||
ret);
|
||||
}
|
||||
|
||||
static int hp_wmi_setup_fan_settings(struct hp_wmi_hwmon_priv *priv)
|
||||
|
|
@ -2597,7 +2604,9 @@ static int hp_wmi_hwmon_init(void)
|
|||
|
||||
INIT_DELAYED_WORK(&priv->keep_alive_dwork, hp_wmi_hwmon_keep_alive_handler);
|
||||
platform_set_drvdata(hp_wmi_platform_dev, priv);
|
||||
hp_wmi_apply_fan_settings(priv);
|
||||
ret = hp_wmi_apply_fan_settings(priv);
|
||||
if (ret)
|
||||
dev_warn(dev, "Failed to apply initial fan settings: %d\n", ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user