public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] clk: hisilicon: Improve deallocation in error path
@ 2026-03-03 15:25 J. Neuschäfer via B4 Relay
  2026-03-04 15:00 ` Brian Masney
  0 siblings, 1 reply; 4+ messages in thread
From: J. Neuschäfer via B4 Relay @ 2026-03-03 15:25 UTC (permalink / raw)
  To: Michael Turquette, Stephen Boyd
  Cc: Tao Lan, linux-clk, linux-kernel, J. Neuschäfer

From: "J. Neuschäfer" <j.ne@posteo.net>

Unmap 'base' if an error occurs after it has been mapped.

Reported-by: Tao Lan <taolan@huawei.com>
Closes: https://lore.kernel.org/lkml/ZNlSH+eWV8Sk3FYn@probook/
Signed-off-by: J. Neuschäfer <j.ne@posteo.net>
---
Changes in v2:
- Rebase on v7.0-rc2
- Update my email address
- Reword the commit message somewhat
- Link to v1: https://lore.kernel.org/r/20240708-hisi-error-v1-1-727bc7399b63@gmx.net
---
 drivers/clk/hisilicon/clk.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/hisilicon/clk.c b/drivers/clk/hisilicon/clk.c
index fae65127cd4aa8..08050ff1c8cf9a 100644
--- a/drivers/clk/hisilicon/clk.c
+++ b/drivers/clk/hisilicon/clk.c
@@ -70,7 +70,7 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
 
 	clk_data = kzalloc_obj(*clk_data);
 	if (!clk_data)
-		goto err;
+		goto err_base;
 
 	clk_data->base = base;
 	clk_table = kzalloc_objs(*clk_table, nr_clks);
@@ -83,6 +83,8 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
 	return clk_data;
 err_data:
 	kfree(clk_data);
+err_base:
+	iounmap(base);
 err:
 	return NULL;
 }

---
base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
change-id: 20240329-hisi-error-c00ad7f8dd72

Best regards,
-- 
J. Neuschäfer <j.ne@posteo.net>



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] clk: hisilicon: Improve deallocation in error path
  2026-03-03 15:25 [PATCH v2] clk: hisilicon: Improve deallocation in error path J. Neuschäfer via B4 Relay
@ 2026-03-04 15:00 ` Brian Masney
  2026-03-05  9:02   ` J. Neuschäfer
  0 siblings, 1 reply; 4+ messages in thread
From: Brian Masney @ 2026-03-04 15:00 UTC (permalink / raw)
  To: j.ne; +Cc: Michael Turquette, Stephen Boyd, Tao Lan, linux-clk, linux-kernel

On Tue, Mar 03, 2026 at 04:25:18PM +0100, J. Neuschäfer via B4 Relay wrote:
> From: "J. Neuschäfer" <j.ne@posteo.net>
> 
> Unmap 'base' if an error occurs after it has been mapped.
> 
> Reported-by: Tao Lan <taolan@huawei.com>
> Closes: https://lore.kernel.org/lkml/ZNlSH+eWV8Sk3FYn@probook/
> Signed-off-by: J. Neuschäfer <j.ne@posteo.net>

My understanding is that you need to use your full first name in the
Signed-off-by.

> ---
> Changes in v2:
> - Rebase on v7.0-rc2
> - Update my email address
> - Reword the commit message somewhat
> - Link to v1: https://lore.kernel.org/r/20240708-hisi-error-v1-1-727bc7399b63@gmx.net
> ---
>  drivers/clk/hisilicon/clk.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/hisilicon/clk.c b/drivers/clk/hisilicon/clk.c
> index fae65127cd4aa8..08050ff1c8cf9a 100644
> --- a/drivers/clk/hisilicon/clk.c
> +++ b/drivers/clk/hisilicon/clk.c
> @@ -70,7 +70,7 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
>  
>  	clk_data = kzalloc_obj(*clk_data);
>  	if (!clk_data)
> -		goto err;
> +		goto err_base;
>  
>  	clk_data->base = base;
>  	clk_table = kzalloc_objs(*clk_table, nr_clks);
> @@ -83,6 +83,8 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
>  	return clk_data;
>  err_data:
>  	kfree(clk_data);
> +err_base:
> +	iounmap(base);

Use devm_of_iomap() and it will be automatically cleaned up for you.

Brian


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] clk: hisilicon: Improve deallocation in error path
  2026-03-04 15:00 ` Brian Masney
@ 2026-03-05  9:02   ` J. Neuschäfer
  2026-03-05 11:11     ` Brian Masney
  0 siblings, 1 reply; 4+ messages in thread
From: J. Neuschäfer @ 2026-03-05  9:02 UTC (permalink / raw)
  To: Brian Masney
  Cc: j.ne, Michael Turquette, Stephen Boyd, Tao Lan, linux-clk,
	linux-kernel

On Wed, Mar 04, 2026 at 10:00:15AM -0500, Brian Masney wrote:
> On Tue, Mar 03, 2026 at 04:25:18PM +0100, J. Neuschäfer via B4 Relay wrote:
> > From: "J. Neuschäfer" <j.ne@posteo.net>
> > 
> > Unmap 'base' if an error occurs after it has been mapped.
> > 
> > Reported-by: Tao Lan <taolan@huawei.com>
> > Closes: https://lore.kernel.org/lkml/ZNlSH+eWV8Sk3FYn@probook/
> > Signed-off-by: J. Neuschäfer <j.ne@posteo.net>
> 
> My understanding is that you need to use your full first name in the
> Signed-off-by.

I have been contributing to the Linux kernel and other projects using my
abbreviated first name for over a year. It has been mostly well received.

> 
> > ---
> > Changes in v2:
> > - Rebase on v7.0-rc2
> > - Update my email address
> > - Reword the commit message somewhat
> > - Link to v1: https://lore.kernel.org/r/20240708-hisi-error-v1-1-727bc7399b63@gmx.net
> > ---
> >  drivers/clk/hisilicon/clk.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/clk/hisilicon/clk.c b/drivers/clk/hisilicon/clk.c
> > index fae65127cd4aa8..08050ff1c8cf9a 100644
> > --- a/drivers/clk/hisilicon/clk.c
> > +++ b/drivers/clk/hisilicon/clk.c
> > @@ -70,7 +70,7 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
> >  
> >  	clk_data = kzalloc_obj(*clk_data);
> >  	if (!clk_data)
> > -		goto err;
> > +		goto err_base;
> >  
> >  	clk_data->base = base;
> >  	clk_table = kzalloc_objs(*clk_table, nr_clks);
> > @@ -83,6 +83,8 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
> >  	return clk_data;
> >  err_data:
> >  	kfree(clk_data);
> > +err_base:
> > +	iounmap(base);
> 
> Use devm_of_iomap() and it will be automatically cleaned up for you.

This would require a larger restructuring of the HiSilicon clock drivers
to pass a struct device * to hisi_clk_init. I'd rather avoid that
because I can't currently test these drivers and because the benefit is
questionable. However, I still had the upstreaming of this patch in my
backlog, and I think it's simple enough to review as is.

For instance, in drivers/clk/hisilicon/clk-hi3620.c:

static void __init hi3620_clk_init(struct device_node *np)
{
	struct hisi_clock_data *clk_data;

	clk_data = hisi_clk_init(np, HI3620_NR_CLKS);
	...
}
CLK_OF_DECLARE(hi3620_clk, "hisilicon,hi3620-clock", hi3620_clk_init);

Init functions registered with CLK_OF_DECLARE don't have access to a
struct device *.


Best regards,
J. Neuschäfer

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] clk: hisilicon: Improve deallocation in error path
  2026-03-05  9:02   ` J. Neuschäfer
@ 2026-03-05 11:11     ` Brian Masney
  0 siblings, 0 replies; 4+ messages in thread
From: Brian Masney @ 2026-03-05 11:11 UTC (permalink / raw)
  To: J. Neuschäfer
  Cc: Michael Turquette, Stephen Boyd, Tao Lan, linux-clk, linux-kernel

On Thu, Mar 05, 2026 at 09:02:11AM +0000, J. Neuschäfer wrote:
> On Wed, Mar 04, 2026 at 10:00:15AM -0500, Brian Masney wrote:
> > On Tue, Mar 03, 2026 at 04:25:18PM +0100, J. Neuschäfer via B4 Relay wrote:
> > > From: "J. Neuschäfer" <j.ne@posteo.net>
> > > 
> > > Unmap 'base' if an error occurs after it has been mapped.
> > > 
> > > Reported-by: Tao Lan <taolan@huawei.com>
> > > Closes: https://lore.kernel.org/lkml/ZNlSH+eWV8Sk3FYn@probook/
> > > Signed-off-by: J. Neuschäfer <j.ne@posteo.net>
> > 
> > My understanding is that you need to use your full first name in the
> > Signed-off-by.
> 
> I have been contributing to the Linux kernel and other projects using my
> abbreviated first name for over a year. It has been mostly well received.

Sorry I should have checked.

> > > Changes in v2:
> > > - Rebase on v7.0-rc2
> > > - Update my email address
> > > - Reword the commit message somewhat
> > > - Link to v1: https://lore.kernel.org/r/20240708-hisi-error-v1-1-727bc7399b63@gmx.net
> > > ---
> > >  drivers/clk/hisilicon/clk.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/clk/hisilicon/clk.c b/drivers/clk/hisilicon/clk.c
> > > index fae65127cd4aa8..08050ff1c8cf9a 100644
> > > --- a/drivers/clk/hisilicon/clk.c
> > > +++ b/drivers/clk/hisilicon/clk.c
> > > @@ -70,7 +70,7 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
> > >  
> > >  	clk_data = kzalloc_obj(*clk_data);
> > >  	if (!clk_data)
> > > -		goto err;
> > > +		goto err_base;
> > >  
> > >  	clk_data->base = base;
> > >  	clk_table = kzalloc_objs(*clk_table, nr_clks);
> > > @@ -83,6 +83,8 @@ struct hisi_clock_data *hisi_clk_init(struct device_node *np,
> > >  	return clk_data;
> > >  err_data:
> > >  	kfree(clk_data);
> > > +err_base:
> > > +	iounmap(base);
> > 
> > Use devm_of_iomap() and it will be automatically cleaned up for you.
> 
> This would require a larger restructuring of the HiSilicon clock drivers
> to pass a struct device * to hisi_clk_init. I'd rather avoid that
> because I can't currently test these drivers and because the benefit is
> questionable. However, I still had the upstreaming of this patch in my
> backlog, and I think it's simple enough to review as is.

OK, fair enough.

Reviewed-by: Brian Masney <bmasney@redhat.com>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-03-05 11:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-03 15:25 [PATCH v2] clk: hisilicon: Improve deallocation in error path J. Neuschäfer via B4 Relay
2026-03-04 15:00 ` Brian Masney
2026-03-05  9:02   ` J. Neuschäfer
2026-03-05 11:11     ` Brian Masney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox