[PATCH] cpufreq: mediatek: Release DVFS resources when removing the driver
From: Wentao Liang
Date: Tue Nov 03 2026 - 01:36:08 EST
mtk_cpufreq_probe() registers the cpufreq driver and retains clocks,
regulators, OPP tables and OPP notifiers in dvfs_info_list. There is no
platform remove callback to undo this on device unbind or module unload.
The devm-allocated DVFS information is freed while the list and cpufreq
driver still refer to it, in addition to leaking the retained resources.
Unregister the cpufreq driver before releasing the DVFS resources and
removing their entries from the list, as in the probe failure path.
Fixes: 89b56047f6f9 ("cpufreq: mt8173: Move resources allocation into ->probe()")
Cc: stable@xxxxxxxxxxxxxxx
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
drivers/cpufreq/mediatek-cpufreq.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
index f9b1eca176eb..5776310d96c0 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -677,11 +677,24 @@ static int mtk_cpufreq_probe(struct platform_device *pdev)
return ret;
}
+static void mtk_cpufreq_remove(struct platform_device *pdev)
+{
+ struct mtk_cpu_dvfs_info *info, *tmp;
+
+ cpufreq_unregister_driver(&mtk_cpufreq_driver);
+
+ list_for_each_entry_safe(info, tmp, &dvfs_info_list, list_head) {
+ mtk_cpu_dvfs_info_release(info);
+ list_del(&info->list_head);
+ }
+}
+
static struct platform_driver mtk_cpufreq_platdrv = {
.driver = {
.name = "mtk-cpufreq",
},
.probe = mtk_cpufreq_probe,
+ .remove = mtk_cpufreq_remove,
};
static const struct mtk_cpufreq_platform_data mt2701_platform_data = {
--
2.34.1