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@vger.kernel.org Signed-off-by: Akari Tsuyukusa --- 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..9b8c35897789 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, infra_clk_data); + return 0; unregister_clk_hw: -- 2.55.0