* [PATCH 1/3] memory: mtk-smi: fix device leaks on common probe
2025-11-21 16:46 [PATCH 0/3] memory: mtk-smi: fix device leaks on probe Johan Hovold
@ 2025-11-21 16:46 ` Johan Hovold
2025-11-21 16:46 ` [PATCH 2/3] memory: mtk-smi: fix device leak on larb probe Johan Hovold
2025-11-21 16:46 ` [PATCH 3/3] memory: mtk-smi: clean up device link creation Johan Hovold
2 siblings, 0 replies; 4+ messages in thread
From: Johan Hovold @ 2025-11-21 16:46 UTC (permalink / raw)
To: Yong Wu, Krzysztof Kozlowski
Cc: Matthias Brugger, AngeloGioacchino Del Regno, linux-mediatek,
linux-kernel, Johan Hovold, stable, Miaoqian Lin
Make sure to drop the reference taken when looking up the SMI device
during common probe on late probe failure (e.g. probe deferral) and on
driver unbind.
Fixes: 47404757702e ("memory: mtk-smi: Add device link for smi-sub-common")
Fixes: 038ae37c510f ("memory: mtk-smi: add missing put_device() call in mtk_smi_device_link_common")
Cc: stable@vger.kernel.org # 5.16: 038ae37c510f
Cc: Yong Wu <yong.wu@mediatek.com>
Cc: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/memory/mtk-smi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/memory/mtk-smi.c b/drivers/memory/mtk-smi.c
index 733e22f695ab..dd6150d200e8 100644
--- a/drivers/memory/mtk-smi.c
+++ b/drivers/memory/mtk-smi.c
@@ -674,6 +674,7 @@ static int mtk_smi_larb_probe(struct platform_device *pdev)
err_pm_disable:
pm_runtime_disable(dev);
device_link_remove(dev, larb->smi_common_dev);
+ put_device(larb->smi_common_dev);
return ret;
}
@@ -917,6 +918,7 @@ static void mtk_smi_common_remove(struct platform_device *pdev)
if (common->plat->type == MTK_SMI_GEN2_SUB_COMM)
device_link_remove(&pdev->dev, common->smi_common_dev);
pm_runtime_disable(&pdev->dev);
+ put_device(common->smi_common_dev);
}
static int __maybe_unused mtk_smi_common_resume(struct device *dev)
--
2.51.2
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 2/3] memory: mtk-smi: fix device leak on larb probe
2025-11-21 16:46 [PATCH 0/3] memory: mtk-smi: fix device leaks on probe Johan Hovold
2025-11-21 16:46 ` [PATCH 1/3] memory: mtk-smi: fix device leaks on common probe Johan Hovold
@ 2025-11-21 16:46 ` Johan Hovold
2025-11-21 16:46 ` [PATCH 3/3] memory: mtk-smi: clean up device link creation Johan Hovold
2 siblings, 0 replies; 4+ messages in thread
From: Johan Hovold @ 2025-11-21 16:46 UTC (permalink / raw)
To: Yong Wu, Krzysztof Kozlowski
Cc: Matthias Brugger, AngeloGioacchino Del Regno, linux-mediatek,
linux-kernel, Johan Hovold, stable, Miaoqian Lin
Make sure to drop the reference taken when looking up the SMI device
during larb probe on late probe failure (e.g. probe deferral) and on
driver unbind.
Fixes: cc8bbe1a8312 ("memory: mediatek: Add SMI driver")
Fixes: 038ae37c510f ("memory: mtk-smi: add missing put_device() call in mtk_smi_device_link_common")
Cc: stable@vger.kernel.org # 4.6: 038ae37c510f
Cc: Yong Wu <yong.wu@mediatek.com>
Cc: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/memory/mtk-smi.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/memory/mtk-smi.c b/drivers/memory/mtk-smi.c
index dd6150d200e8..3609bfd3c64b 100644
--- a/drivers/memory/mtk-smi.c
+++ b/drivers/memory/mtk-smi.c
@@ -685,6 +685,7 @@ static void mtk_smi_larb_remove(struct platform_device *pdev)
device_link_remove(&pdev->dev, larb->smi_common_dev);
pm_runtime_disable(&pdev->dev);
component_del(&pdev->dev, &mtk_smi_larb_component_ops);
+ put_device(larb->smi_common_dev);
}
static int __maybe_unused mtk_smi_larb_resume(struct device *dev)
--
2.51.2
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 3/3] memory: mtk-smi: clean up device link creation
2025-11-21 16:46 [PATCH 0/3] memory: mtk-smi: fix device leaks on probe Johan Hovold
2025-11-21 16:46 ` [PATCH 1/3] memory: mtk-smi: fix device leaks on common probe Johan Hovold
2025-11-21 16:46 ` [PATCH 2/3] memory: mtk-smi: fix device leak on larb probe Johan Hovold
@ 2025-11-21 16:46 ` Johan Hovold
2 siblings, 0 replies; 4+ messages in thread
From: Johan Hovold @ 2025-11-21 16:46 UTC (permalink / raw)
To: Yong Wu, Krzysztof Kozlowski
Cc: Matthias Brugger, AngeloGioacchino Del Regno, linux-mediatek,
linux-kernel, Johan Hovold
Clean up device link creation by bailing out early in case the SMI
platform device lookup fails.
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/memory/mtk-smi.c | 35 +++++++++++++++++++----------------
1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/drivers/memory/mtk-smi.c b/drivers/memory/mtk-smi.c
index 3609bfd3c64b..aaeba8ab211e 100644
--- a/drivers/memory/mtk-smi.c
+++ b/drivers/memory/mtk-smi.c
@@ -595,25 +595,28 @@ static int mtk_smi_device_link_common(struct device *dev, struct device **com_de
smi_com_pdev = of_find_device_by_node(smi_com_node);
of_node_put(smi_com_node);
- if (smi_com_pdev) {
- /* smi common is the supplier, Make sure it is ready before */
- if (!platform_get_drvdata(smi_com_pdev)) {
- put_device(&smi_com_pdev->dev);
- return -EPROBE_DEFER;
- }
- smi_com_dev = &smi_com_pdev->dev;
- link = device_link_add(dev, smi_com_dev,
- DL_FLAG_PM_RUNTIME | DL_FLAG_STATELESS);
- if (!link) {
- dev_err(dev, "Unable to link smi-common dev\n");
- put_device(&smi_com_pdev->dev);
- return -ENODEV;
- }
- *com_dev = smi_com_dev;
- } else {
+ if (!smi_com_pdev) {
dev_err(dev, "Failed to get the smi_common device\n");
return -EINVAL;
}
+
+ /* smi common is the supplier, Make sure it is ready before */
+ if (!platform_get_drvdata(smi_com_pdev)) {
+ put_device(&smi_com_pdev->dev);
+ return -EPROBE_DEFER;
+ }
+
+ smi_com_dev = &smi_com_pdev->dev;
+ link = device_link_add(dev, smi_com_dev,
+ DL_FLAG_PM_RUNTIME | DL_FLAG_STATELESS);
+ if (!link) {
+ dev_err(dev, "Unable to link smi-common dev\n");
+ put_device(&smi_com_pdev->dev);
+ return -ENODEV;
+ }
+
+ *com_dev = smi_com_dev;
+
return 0;
}
--
2.51.2
^ permalink raw reply related [flat|nested] 4+ messages in thread