remoteproc: scp: fix device reference leak on failed lookup
Subsystems (3)
PATCH 1/1 remoteproc: scp: fix device reference leak on failed lookup
Make sure to drop the reference taken to the SCP device when attempting to look up its driver data before the driver has been bound.
Note that holding a reference to a device does not prevent its driver data from going away.
Fixes 63c13d61eafe ("remoteproc/mediatek: add SCP support for mt8183")
Cc [email protected] # 5.6
Cc Erin Lo <[email protected]>
Signed-off-by Johan Hovold <[email protected]>
--- drivers/remoteproc/mtk_scp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/remoteproc/mtk_scp.c +8 -1
@@ -36,6 +36,7 @@ struct mtk_scp *scp_get(struct platform_device *pdev)struct device *dev = &pdev->dev;struct device_node *scp_node;struct platform_device *scp_pdev; +struct mtk_scp *scp; scp_node =of_parse_phandle (dev->of_node,"mediatek,scp" ,0 );if (!scp_node) {
@@ -51,7 +52,13 @@ struct mtk_scp *scp_get(struct platform_device *pdev)return NULL ; } -return platform_get_drvdata (scp_pdev); + scp =platform_get_drvdata (scp_pdev); +if (!scp) { +put_device (&scp_pdev->dev); +return NULL ; + } + +return scp; }EXPORT_SYMBOL_GPL (scp_get);
Signature · 1 line
2.54.0
Quoted 6 lines · Johan Hovold
Make sure to drop the reference taken to the SCP device when attempting to look up its driver data before the driver has been bound.
Note that holding a reference to a device does not prevent its driver data from going away.
Quoted 8 lines
Fixes 63c13d61eafe ("remoteproc/mediatek: add SCP support for mt8183")Cc [email protected] # 5.6Cc Erin Lo <[email protected]>Signed-off-by Johan Hovold <[email protected]>--- drivers/remoteproc/mtk_scp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
Applied.
Thanks,
Mathieu
Quoted 30 lines
drivers/remoteproc/mtk_scp.c +8
-1@@ -36,6 +36,7 @@ struct mtk_scp *scp_get(struct platform_device *pdev)struct device *dev = &pdev->dev;struct device_node *scp_node;struct platform_device *scp_pdev; +struct mtk_scp *scp; scp_node =of_parse_phandle (dev->of_node,"mediatek,scp" ,0 );if (!scp_node) {@@ -51,7 +52,13 @@ struct mtk_scp *scp_get(struct platform_device *pdev)return NULL ; } -return platform_get_drvdata (scp_pdev); + scp =platform_get_drvdata (scp_pdev); +if (!scp) { +put_device (&scp_pdev->dev); +return NULL ; + } + +return scp; }EXPORT_SYMBOL_GPL (scp_get);Signature · 1 line
2.54.0