Re: [PATCH v2 3/4] cpufreq: Fix governor module removal race

From: Viresh Kumar
Date: Mon Nov 27 2017 - 21:38:20 EST


On 23-11-17, 14:27, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
>
> It is possible to remove a cpufreq governor module after
> cpufreq_parse_governor() has returned success in
> store_scaling_governor() and before cpufreq_set_policy()
> acquires a reference to it, because the governor list is
> not protected during that period and nothing prevents the
> governor from being unregistered then.
>
> Prevent that from happening by acquiring an extra reference
> to the governor module temporarily in cpufreq_parse_governor(),
> under cpufreq_governor_mutex, and dropping it in
> store_scaling_governor(), when cpufreq_set_policy() returns.
>
> Note that the second cpufreq_parse_governor() call site is fine,
> because it only cares about the policy member of new_policy.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> ---
>
> -> v2: Drop changes to clear policy->governor in
> cpufreq_parse_governor() in the cpufreq_driver->setpolicy set
> case, as that field should always be NULL then.
>
> ---
> drivers/cpufreq/cpufreq.c | 6 ++++++
> 1 file changed, 6 insertions(+)

Acked-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>

--
viresh