memory: mtk-smi: fix device leaks on probe
cover memory: mtk-smi: fix device leaks on probe
Make sure to drop the reference taken when looking up the SMI device during probe on late probe failure (e.g. probe deferral) and on driver unbind.
Included is also a related cleanup.
Johan
Johan Hovold (3):
memory: mtk-smi: fix device leaks on common probe
memory: mtk-smi: fix device leak on larb probe
memory: mtk-smi: clean up device link creation
drivers/memory/mtk-smi.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-)
Signature · 1 line
2.51.2
PATCH 1/3 memory: mtk-smi: fix device leaks on common probe
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.
--- drivers/memory/mtk-smi.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/memory/mtk-smi.c +2 -0
@@ -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)
Signature · 1 line
2.51.2
Krzysztof Kozlowski
maintainerRe: [PATCH 1/3] memory: mtk-smi: fix device leaks on common probe
Quoted 10 lines · Johan Hovold
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 [email protected] # 5.16: 038ae37c510fCc Yong Wu <[email protected]>Cc Miaoqian Lin <[email protected]>Signed-off-by Johan Hovold <[email protected]>
Thanks Johan.
Side note:
Three weeks and no reviews from Mediatek developers (not necessarily SoC maintainers, I know your queue is long). So please remember Mediatek: in case you ever wonder why your patches are waiting on the list for very long, here is your answer.
Best regards,
Krzysztof
PATCH 2/3 memory: mtk-smi: fix device leak on larb probe
In reply to Johan HovoldMake 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.
--- drivers/memory/mtk-smi.c | 1 + 1 file changed, 1 insertion(+)
drivers/memory/mtk-smi.c +1 -0
@@ -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)
Signature · 1 line
2.51.2
PATCH 3/3 memory: mtk-smi: clean up device link creation
In reply to Johan HovoldClean up device link creation by bailing out early in case the SMI platform device lookup fails.
--- drivers/memory/mtk-smi.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-)
drivers/memory/mtk-smi.c +19 -16
@@ -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 ; }
Signature · 1 line
2.51.2
Quoted 9 lines · Johan Hovold
Make sure to drop the reference taken when looking up the SMI device during probe on late probe failure (e.g. probe deferral) and on driver unbind.
Included is also a related cleanup.
Johan
[...]
I fixed up stable-cc syntax - missing final Cc, because only prerequisite was mentioned.
Applied, thanks!
[1/3] memory: mtk-smi: fix device leaks on common probe
https://git.kernel.org/krzk/linux-mem-ctrl/c/6cfa038bddd710f544076ea2ef7792fc82fbedd6 [2/3] memory: mtk-smi: fix device leak on larb probe https://git.kernel.org/krzk/linux-mem-ctrl/c/9dae65913b32d05dbc8ff4b8a6bf04a0e49a8eb6 [3/3] memory: mtk-smi: clean up device link creation https://git.kernel.org/krzk/linux-mem-ctrl/c/78da7027e2a99edea0d7e97b25d75be4698a8728
Best regards,
Signature · 1 line
Krzysztof Kozlowski <[email protected]>