thermal: core: Manage thermal_governor_lock using a mutex guard

Switch over the thermal core to using a mutex guard for
thermal_governor_lock management.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/3679429.R56niFO833@rjwysocki.net
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
This commit is contained in:
Rafael J. Wysocki 2024-10-11 00:22:09 +02:00
parent af73d53e97
commit dfa245f512

View File

@ -124,7 +124,7 @@ int thermal_register_governor(struct thermal_governor *governor)
if (!governor)
return -EINVAL;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
err = -EBUSY;
if (!__find_governor(governor->name)) {
@ -163,8 +163,6 @@ int thermal_register_governor(struct thermal_governor *governor)
}
}
mutex_unlock(&thermal_governor_lock);
return err;
}
@ -175,10 +173,10 @@ void thermal_unregister_governor(struct thermal_governor *governor)
if (!governor)
return;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
if (!__find_governor(governor->name))
goto exit;
return;
list_del(&governor->governor_list);
@ -189,9 +187,6 @@ void thermal_unregister_governor(struct thermal_governor *governor)
THERMAL_NAME_LENGTH))
thermal_set_governor(pos, NULL);
}
exit:
mutex_unlock(&thermal_governor_lock);
}
int thermal_zone_device_set_policy(struct thermal_zone_device *tz,
@ -200,16 +195,13 @@ int thermal_zone_device_set_policy(struct thermal_zone_device *tz,
struct thermal_governor *gov;
int ret = -EINVAL;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
guard(thermal_zone)(tz);
gov = __find_governor(strim(policy));
if (gov)
ret = thermal_set_governor(tz, gov);
mutex_unlock(&thermal_governor_lock);
thermal_notify_tz_gov_change(tz, policy);
return ret;
@ -220,15 +212,13 @@ int thermal_build_list_of_policies(char *buf)
struct thermal_governor *pos;
ssize_t count = 0;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
list_for_each_entry(pos, &thermal_governor_list, governor_list) {
count += sysfs_emit_at(buf, count, "%s ", pos->name);
}
count += sysfs_emit_at(buf, count, "\n");
mutex_unlock(&thermal_governor_lock);
return count;
}
@ -670,17 +660,18 @@ int for_each_thermal_governor(int (*cb)(struct thermal_governor *, void *),
void *data)
{
struct thermal_governor *gov;
int ret = 0;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
list_for_each_entry(gov, &thermal_governor_list, governor_list) {
int ret;
ret = cb(gov, data);
if (ret)
break;
return ret;
}
mutex_unlock(&thermal_governor_lock);
return ret;
return 0;
}
int for_each_thermal_cooling_device(int (*cb)(struct thermal_cooling_device *,
@ -1348,20 +1339,15 @@ EXPORT_SYMBOL_GPL(thermal_zone_get_crit_temp);
static int thermal_zone_init_governor(struct thermal_zone_device *tz)
{
struct thermal_governor *governor;
int ret;
mutex_lock(&thermal_governor_lock);
guard(mutex)(&thermal_governor_lock);
if (tz->tzp)
governor = __find_governor(tz->tzp->governor_name);
else
governor = def_governor;
ret = thermal_set_governor(tz, governor);
mutex_unlock(&thermal_governor_lock);
return ret;
return thermal_set_governor(tz, governor);
}
static void thermal_zone_init_complete(struct thermal_zone_device *tz)