[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220513042705.nbnd6vccuiu6lb7a@vireshk-i7>
Date: Fri, 13 May 2022 09:57:05 +0530
From: Viresh Kumar <viresh.kumar@...aro.org>
To: "Rafael J. Wysocki" <rafael@...nel.org>
Cc: Schspa Shi <schspa@...il.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux PM <linux-pm@...r.kernel.org>
Subject: Re: [PATCH v3] cpufreq: fix race on cpufreq online
On 12-05-22, 12:49, Rafael J. Wysocki wrote:
> Well, would there be a problem with moving the
> cpufreq_policy_put_kobj() call to the front of cpufreq_policy_free()?
Emptying cpufreq_cpu_data first is required, else someone else will
end up doing kobject_get() again.
> If we did that, we'd know that everything could be torn down safely,
> because nobody would be holding references to the policy any more.
With the way we are progressing now, we will always have policy->cpus
empty while we reach cpufreq_policy_free(). With that I think we will
be safe with the current code here. I would also add a BUG_ON() here
for non empty policy->cpus to be safe.
> > > TBH, I'm not sure why show() doesn't check policy_is_inactive() under the rwsem.
> >
> > I agree, both show/store should have it.
> >
> > > Moreover, I'm not sure why the locking dance in store() is necessary.
> >
> > commit fdd320da84c6 ("cpufreq: Lock CPU online/offline in cpufreq_register_driver()")
>
> I get that, but I'm wondering if locking CPU hotplug from store() is
> needed at all. I mean, if we are in store(), we are holding an active
> reference to the policy kobject, so the policy cannot go away until we
> are done anyway. Thus it should be sufficient to use the policy rwsem
> for synchronization.
I think after the current patchset is applied and we have the inactive
policy check in store(), we won't required the dance after all.
--
viresh
Powered by blists - more mailing lists