From: Jonathan Cameron <jonathan.cameron@huawei.com>
To: Zihuan Zhang <zhangzihuan@kylinos.cn>
Cc: "Rafael J . wysocki" <rafael@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Catalin Marinas <catalin.marinas@arm.com>,
"Will Deacon" <will@kernel.org>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Krzysztof Kozlowski <krzk@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
Thierry Reding <thierry.reding@gmail.com>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Tvrtko Ursulin <tursulin@ursulin.net>,
"David Airlie" <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>,
Daniel Lezcano <daniel.lezcano@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
"Shawn Guo" <shawnguo@kernel.org>,
Eduardo Valentin <edubezval@gmail.com>,
Keerthy <j-keerthy@ti.com>, Ben Horgan <ben.horgan@arm.com>,
zhenglifeng <zhenglifeng1@huawei.com>,
Zhang Rui <rui.zhang@intel.com>, Len Brown <lenb@kernel.org>,
Lukasz Luba <lukasz.luba@arm.com>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
Beata Michalska <beata.michalska@arm.com>,
Fabio Estevam <festevam@gmail.com>,
Pavel Machek <pavel@kernel.org>,
"Sumit Gupta" <sumitg@nvidia.com>,
Prasanna Kumar T S M <ptsm@linux.microsoft.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Yicong Yang <yangyicong@hisilicon.com>,
<linux-pm@vger.kernel.org>, <linux-acpi@vger.kernel.org>,
<linuxppc-dev@lists.ozlabs.org>,
<linux-arm-kernel@lists.infradead.org>,
<intel-gfx@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>, <imx@lists.linux.dev>,
<linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 05/10] PM / devfreq: Use scope-based cleanup helper
Date: Fri, 5 Sep 2025 11:01:32 +0100 [thread overview]
Message-ID: <20250905110132.00003987@huawei.com> (raw)
In-Reply-To: <20250903131733.57637-6-zhangzihuan@kylinos.cn>
On Wed, 3 Sep 2025 21:17:28 +0800
Zihuan Zhang <zhangzihuan@kylinos.cn> wrote:
> Replace the manual cpufreq_cpu_put() with __free(put_cpufreq_policy)
> annotation for policy references. This reduces the risk of reference
> counting mistakes and aligns the code with the latest kernel style.
>
> No functional change intended.
>
> Signed-off-by: Zihuan Zhang <zhangzihuan@kylinos.cn>
This falls into the mess of mixing gotos with cleanup.h usage.
The guidance in cleanup.h IIRC say don't do this. It isn't (I think) buggy here
but it does make things harder to reason about and generally removes
the point of doing __free. So I think if you are going to do this one
you need to do it fully which is a little more complex.
Need to deal with parent_cpu_data which isn't that hard.
If you mix the two, Linus may get grumpy!
> ---
> drivers/devfreq/governor_passive.c | 25 +++++++++----------------
> 1 file changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/devfreq/governor_passive.c b/drivers/devfreq/governor_passive.c
> index 953cf9a1e9f7..a035cf44bdb8 100644
> --- a/drivers/devfreq/governor_passive.c
> +++ b/drivers/devfreq/governor_passive.c
> @@ -256,7 +253,6 @@ static int cpufreq_passive_register_notifier(struct devfreq *devfreq)
> struct device *dev = devfreq->dev.parent;
> struct opp_table *opp_table = NULL;
> struct devfreq_cpu_data *parent_cpu_data;
> - struct cpufreq_policy *policy;
> struct device *cpu_dev;
> unsigned int cpu;
> int ret;
> @@ -273,23 +269,23 @@ static int cpufreq_passive_register_notifier(struct devfreq *devfreq)
> }
>
> for_each_possible_cpu(cpu) {
> - policy = cpufreq_cpu_get(cpu);
> + struct cpufreq_policy *policy __free(put_cpufreq_policy) =
> + cpufreq_cpu_get(cpu);
> +
> if (!policy) {
> ret = -EPROBE_DEFER;
> goto err;
Return directly here (and after changes below, in all error paths.
> }
>
> parent_cpu_data = get_parent_cpu_data(p_data, policy);
> - if (parent_cpu_data) {
> - cpufreq_cpu_put(policy);
> + if (parent_cpu_data)
> continue;
This is the first use of parent_cpu_data. If it's set at this point
we don't use it at all. So step 1. Rename this to split this
use from the one that follows.
> - }
>
> parent_cpu_data = kzalloc(sizeof(*parent_cpu_data),
> GFP_KERNEL);
This one needs to be
struct devfreq_cpu_data *parent_cpu_data __free(kfree) =
kzalloc(sizeof(*parent_cpu_data), GFP_KERNEL);
> if (!parent_cpu_data) {
> ret = -ENOMEM;
> - goto err_put_policy;
> + goto err;
> }
>
> cpu_dev = get_cpu_device(cpu);
> @@ -314,7 +310,6 @@ static int cpufreq_passive_register_notifier(struct devfreq *devfreq)
> parent_cpu_data->max_freq = policy->cpuinfo.max_freq;
>
> list_add_tail(&parent_cpu_data->node, &p_data->cpu_data_list);
then here we need to ensure we don't free parent_cpu_data. Hence
list_add_tail(&(no_free_ptr(parent_cpu_data)->node,
&p_data->cpu_data_list);
That that point we have passed ownership of the data to the list.
> - cpufreq_cpu_put(policy);
> }
>
> mutex_lock(&devfreq->lock);
> @@ -327,8 +322,6 @@ static int cpufreq_passive_register_notifier(struct devfreq *devfreq)
>
> err_free_cpu_data:
> kfree(parent_cpu_data);
And all this error block goes away.
> -err_put_policy:
> - cpufreq_cpu_put(policy);
> err:
>
> return ret;
next prev parent reply other threads:[~2025-09-05 10:01 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-03 13:17 [PATCH v4 00/10] cpufreq: use __free() for all cpufreq_cpu_get() references Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 01/10] arm64: topology: Use scope-based cleanup helper Zihuan Zhang
2025-09-05 9:38 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 02/10] ACPI: processor: thermal: " Zihuan Zhang
2025-09-03 13:23 ` Rafael J. Wysocki
2025-09-05 9:45 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 03/10] cpufreq: intel_pstate: " Zihuan Zhang
2025-09-05 9:47 ` Jonathan Cameron
2025-09-05 9:48 ` Rafael J. Wysocki
2025-09-03 13:17 ` [PATCH v4 04/10] cpufreq: powernv: " Zihuan Zhang
2025-09-05 9:49 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 05/10] PM / devfreq: " Zihuan Zhang
2025-09-05 10:01 ` Jonathan Cameron [this message]
2025-09-03 13:17 ` [PATCH v4 06/10] drm/i915: " Zihuan Zhang
2025-09-05 10:02 ` Jonathan Cameron
2025-09-03 13:17 ` [PATCH v4 07/10] powercap: dtpm_cpu: " Zihuan Zhang
2025-09-03 13:45 ` Rafael J. Wysocki
2025-09-04 10:37 ` Zihuan Zhang
2025-09-04 10:55 ` Krzysztof Kozlowski
2025-09-04 13:17 ` Rafael J. Wysocki
2025-09-05 7:44 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 08/10] thermal: imx: " Zihuan Zhang
2025-09-05 10:05 ` Jonathan Cameron
2025-09-05 10:21 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 09/10] thermal/drivers/ti-soc-thermal: " Zihuan Zhang
2025-09-05 6:57 ` Andreas Kemnade
2025-09-05 7:02 ` Krzysztof Kozlowski
2025-09-05 7:54 ` Zihuan Zhang
2025-09-03 13:17 ` [PATCH v4 10/10] PM: EM: " Zihuan Zhang
2025-09-03 13:21 ` Krzysztof Kozlowski
2025-09-03 13:41 ` Rafael J. Wysocki
2025-09-03 13:43 ` Krzysztof Kozlowski
2025-09-04 7:56 ` Zihuan Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250905110132.00003987@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=airlied@gmail.com \
--cc=alim.akhtar@samsung.com \
--cc=beata.michalska@arm.com \
--cc=ben.horgan@arm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=cw00.choi@samsung.com \
--cc=daniel.lezcano@kernel.org \
--cc=dave.hansen@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=edubezval@gmail.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=intel-gfx@lists.freedesktop.org \
--cc=j-keerthy@ti.com \
--cc=jani.nikula@linux.intel.com \
--cc=kernel@pengutronix.de \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lukasz.luba@arm.com \
--cc=mpe@ellerman.id.au \
--cc=myungjoo.ham@samsung.com \
--cc=pavel@kernel.org \
--cc=ptsm@linux.microsoft.com \
--cc=rafael@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=rui.zhang@intel.com \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=simona@ffwll.ch \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=sudeep.holla@arm.com \
--cc=sumitg@nvidia.com \
--cc=thierry.reding@gmail.com \
--cc=tursulin@ursulin.net \
--cc=viresh.kumar@linaro.org \
--cc=will@kernel.org \
--cc=yangyicong@hisilicon.com \
--cc=zhangzihuan@kylinos.cn \
--cc=zhenglifeng1@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox