From: Brian Masney <bmasney@redhat.com>
To: Wentao Liang <vulab@iscas.ac.cn>
Cc: andrew@lunn.ch, gregory.clement@bootlin.com,
sebastian.hesselbarth@gmail.com, mturquette@baylibre.com,
sboyd@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] clk: mvebu: ap-cpu: fix missing clk_put() in ap_cpu_clock_probe()
Date: Mon, 29 Jun 2026 13:14:47 -0400 [thread overview]
Message-ID: <akKoB3CV6AtEQBVu@redhat.com> (raw)
In-Reply-To: <20260617014126.1716291-1-vulab@iscas.ac.cn>
Hi Wentao,
On Wed, Jun 17, 2026 at 01:41:26AM +0000, Wentao Liang wrote:
> The function ap_cpu_clock_probe() calls of_clk_get() to obtain a
> reference to the parent clock for each CPU cluster, but it never
> releases it with clk_put(). The returned clk is used only to read
> the parent's name via __clk_get_name(), and the reference is leaked
> on every successful cluster initialization as well as on the error
> path when devm_clk_hw_register() fails.
>
> Rather than adding clk_put() calls, replace the of_clk_get() +
> __clk_get_name() pattern with of_clk_get_parent_name(), which is
> the intended API for this use case and handles the reference
> counting internally. This matches the pattern already used by the
> sibling drivers clk-cpu.c and clk-corediv.c.
>
> Fixes: f756e362d9384 ("clk: mvebu: add CPU clock driver for Armada 7K/8K")
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> ---
> v3: Replace incorrect Fixes tag.
> v2: Replace of_clk_get() + __clk_get_name() with of_clk_get_parent_name()
> as suggested by Brian Masney, instead of adding clk_put() calls.
> Also correct the Fixes: tag to point to the original commit that
> introduced the leak.
> ---
> drivers/clk/mvebu/ap-cpu-clk.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/clk/mvebu/ap-cpu-clk.c b/drivers/clk/mvebu/ap-cpu-clk.c
> index a8175908e353..1cf63c7a0bc3 100644
> --- a/drivers/clk/mvebu/ap-cpu-clk.c
> +++ b/drivers/clk/mvebu/ap-cpu-clk.c
> @@ -288,7 +288,6 @@ static int ap_cpu_clock_probe(struct platform_device *pdev)
> char *clk_name = "cpu-cluster-0";
> struct clk_init_data init;
> const char *parent_name;
> - struct clk *parent;
> u64 cpu;
>
> cpu = of_get_cpu_hwid(dn, 0);
> @@ -304,13 +303,12 @@ static int ap_cpu_clock_probe(struct platform_device *pdev)
> if (ap_cpu_data->hws[cluster_index])
> continue;
>
> - parent = of_clk_get(np, cluster_index);
> - if (IS_ERR(parent)) {
> - dev_err(dev, "Could not get the clock parent\n");
> + parent_name = of_clk_get_parent_name(np, cluster_index);
> + if (!parent_name) {
> + dev_err(dev, "Could not get the clock parent name\n");
> of_node_put(dn);
> return -EINVAL;
> }
> - parent_name = __clk_get_name(parent);
> clk_name[12] += cluster_index;
> ap_cpu_clk[cluster_index].clk_name =
> ap_cp_unique_name(dev, np->parent, clk_name);
> @@ -328,11 +326,9 @@ static int ap_cpu_clock_probe(struct platform_device *pdev)
> ret = devm_clk_hw_register(dev, &ap_cpu_clk[cluster_index].hw);
> if (ret) {
> of_node_put(dn);
> - clk_put(parent);
> return ret;
> }
> ap_cpu_data->hws[cluster_index] = &ap_cpu_clk[cluster_index].hw;
> - clk_put(parent);
> }
This doesn't apply against Linus's latest tree. It looks like it's just
this last chunk that's the issue. What version of the kernel did you develop
this against? The last change to this driver upstream was from me in August
2025.
Please submit a new version that applies cleanly upstream.
Brian
prev parent reply other threads:[~2026-06-29 17:15 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-17 1:41 [PATCH v3] clk: mvebu: ap-cpu: fix missing clk_put() in ap_cpu_clock_probe() Wentao Liang
2026-06-17 11:00 ` Brian Masney
2026-06-29 17:14 ` Brian Masney [this message]
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=akKoB3CV6AtEQBVu@redhat.com \
--to=bmasney@redhat.com \
--cc=andrew@lunn.ch \
--cc=gregory.clement@bootlin.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
--cc=sebastian.hesselbarth@gmail.com \
--cc=vulab@iscas.ac.cn \
/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