cpufreq: schedutil: Fix UAF issue

sugov_tunables are getting deleted with kobject release() in
'commit 67c98e0231 ("cpufreq: schedutil: Use kobject release()
method to free sugov_tunables")'. So save tunables before freeing.

Change-Id: I9df2604210cb071bb907a39cf7fcc1131e4de5f8
Signed-off-by: Srinivasarao Pathipati <quic_c_spathi@quicinc.com>
This commit is contained in:
Srinivasarao Pathipati 2023-05-18 14:40:32 +05:30
parent 17edd981ce
commit 65d21518f8

View File

@ -1296,12 +1296,14 @@ static void sugov_exit(struct cpufreq_policy *policy)
mutex_lock(&global_tunables_lock);
/* Save tunables before last owner release it in gov_attr_set_put() */
if (tunables->attr_set.usage_count == 1)
sugov_tunables_save(policy, tunables);
count = gov_attr_set_put(&tunables->attr_set, &sg_policy->tunables_hook);
policy->governor_data = NULL;
if (!count) {
sugov_tunables_save(policy, tunables);
if (!count)
sugov_clear_global_tunables();
}
mutex_unlock(&global_tunables_lock);