[PATCH v2 5/6] clk: mediatek: mt8173: fix memory leak on module removal
Brian Masney
bmasney at redhat.com
Thu Jul 30 09:14:10 PDT 2026
Hi Akari,
On Wed, Jul 29, 2026 at 02:02:59AM +0900, Akari Tsuyukusa wrote:
> On Tue, Jul 28, 2026 at 10:53:00AM -0400, Brian Masney wrote:
> > On Tue, Jul 07, 2026 at 04:48:34PM +0900, Akari Tsuyukusa wrote:
> > > clk-mt8173-apmixedsys.c and clk-mt8173-infracfg.c do not call
> > > platform_set_drvdata() during their driver probe callback,
> > > but their remove callback calls platform_get_drvdata().
> > > This results in platform_get_drvdata() returning NULL,
> > > which leads to calling kfree(NULL) in mtk_free_clk_data(NULL).
> > > This leaves clk_data unreleased, causing a memory leak.
> > >
> > > Fix this by calling platform_set_drvdata() during probe.
> > >
> > > Fixes: 4c02c9af3cb9 ("clk: mediatek: mt8173: Break down clock drivers and allow module build")
> > > Cc: stable at vger.kernel.org
> > > Signed-off-by: Akari Tsuyukusa <akkun11.open at gmail.com>
> > > ---
> > > drivers/clk/mediatek/clk-mt8173-apmixedsys.c | 2 ++
> > > drivers/clk/mediatek/clk-mt8173-infracfg.c | 2 ++
> > > 2 files changed, 4 insertions(+)
> > >
> > > diff --git a/drivers/clk/mediatek/clk-mt8173-apmixedsys.c b/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
> > > index d7d416172ab3..65dc4489a09c 100644
> > > --- a/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
> > > +++ b/drivers/clk/mediatek/clk-mt8173-apmixedsys.c
> > > @@ -179,6 +179,8 @@ static int clk_mt8173_apmixed_probe(struct platform_device *pdev)
> > > if (r)
> > > goto unregister_ref2usb;
> > >
> > > + platform_set_drvdata(pdev, clk_data);
> > > +
> > > return 0;
> > >
> > > unregister_ref2usb:
> > > diff --git a/drivers/clk/mediatek/clk-mt8173-infracfg.c b/drivers/clk/mediatek/clk-mt8173-infracfg.c
> > > index fa2d1d557e04..8b69009e1965 100644
> > > --- a/drivers/clk/mediatek/clk-mt8173-infracfg.c
> > > +++ b/drivers/clk/mediatek/clk-mt8173-infracfg.c
> > > @@ -128,6 +128,8 @@ static int clk_mt8173_infracfg_probe(struct platform_device *pdev)
> > > if (r)
> > > goto unregister_clk_hw;
> > >
> > > + platform_set_drvdata(pdev, clk_data);
> > > +
> >
> > This patch doesn't compile.
> >
> > drivers/clk/mediatek/clk-mt8173-infracfg.c: In function ‘clk_mt8173_infracfg_probe’:
> > drivers/clk/mediatek/clk-mt8173-infracfg.c:131:36: error: ‘clk_data’ undeclared (first use in this function); did you mean ‘clk_gate’?
>
> Sorry for sending you a broken patch.
> I accidentally built only with ARCH=arm and missed the build failure.
>
> While fixing this, I noticed that clk-mt8173-infracfg.c can be converted
> to use mtk_clk_simple_probe()/remove() instead of adding driver-specific
> drvdata handling.
>
> The helper currently lacks cpumux support, but I have a reviewed patch
> for it:
> https://lore.kernel.org/lkml/20260304181024.738391-2-akkun11.open@gmail.com/
> (Reviewed-by: Chen-Yu Tsai <wenst at chromium.org>)
>
> Also, adding PLL support to the helper should allow more MediaTek clock
> drivers to use the common probe/remove path:
> https://github.com/TeamYogaBlade2/linux/commit/d991a61887ab76fd83708dffe8e48192e01023d5
>
> Would it be preferable to extend mtk_clk_simple_probe()/remove() with
> cpumux and PLL support and reorganize this series around it?
Yes, that sounds good.
Brian
More information about the Linux-mediatek
mailing list