clk-mt7622-apmixedsys.c and clk-mt7622-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: c50e2ea6507b ("clk: mediatek: mt7622-apmixedsys: Add .remove() callback for module build") Fixes: 838b86331c5e ("clk: mediatek: mt7622: Move infracfg to clk-mt7622-infracfg.c") Cc: stable@vger.kernel.org Signed-off-by: Akari Tsuyukusa Reviewed-by: Brian Masney --- drivers/clk/mediatek/clk-mt7622-apmixedsys.c | 2 ++ drivers/clk/mediatek/clk-mt7622-infracfg.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/drivers/clk/mediatek/clk-mt7622-apmixedsys.c b/drivers/clk/mediatek/clk-mt7622-apmixedsys.c index 8a29eaab0cfc..fae8abda14b3 100644 --- a/drivers/clk/mediatek/clk-mt7622-apmixedsys.c +++ b/drivers/clk/mediatek/clk-mt7622-apmixedsys.c @@ -109,6 +109,8 @@ static int clk_mt7622_apmixed_probe(struct platform_device *pdev) if (ret) goto unregister_gates; + platform_set_drvdata(pdev, clk_data); + return 0; unregister_gates: diff --git a/drivers/clk/mediatek/clk-mt7622-infracfg.c b/drivers/clk/mediatek/clk-mt7622-infracfg.c index cfdf3b07c3e0..cec19447d637 100644 --- a/drivers/clk/mediatek/clk-mt7622-infracfg.c +++ b/drivers/clk/mediatek/clk-mt7622-infracfg.c @@ -90,6 +90,8 @@ static int clk_mt7622_infracfg_probe(struct platform_device *pdev) if (ret) goto unregister_cpumuxes; + platform_set_drvdata(pdev, clk_data); + return 0; unregister_cpumuxes: -- 2.55.0