Message ID | 20220601044858.3352-1-linmq006@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ARM: OMAP2+: Fix refcount leak in omapdss_init_of | expand |
Hello Lin, Thank you for the patch. On Wed, Jun 01, 2022 at 08:48:58AM +0400, Miaoqian Lin wrote: > omapdss_find_dss_of_node() calls of_find_compatible_node() to get device > node. of_find_compatible_node() returns a node pointer with refcount > incremented, we should use of_node_put() on it when done. > Add missing of_node_put() in later error path and normal path. > > Fixes: e0c827aca0730 ("drm/omap: Populate DSS children in omapdss driver") > Signed-off-by: Miaoqian Lin <linmq006@gmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > arch/arm/mach-omap2/display.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c > index 21413a9b7b6c..ed2cb2649cf6 100644 > --- a/arch/arm/mach-omap2/display.c > +++ b/arch/arm/mach-omap2/display.c > @@ -259,11 +259,13 @@ static int __init omapdss_init_of(void) > > if (!pdev) { > pr_err("Unable to find DSS platform device\n"); > + of_node_put(node); > return -ENODEV; > } > > r = of_platform_populate(node, NULL, NULL, &pdev->dev); > put_device(&pdev->dev); > + of_node_put(node); > if (r) { > pr_err("Unable to populate DSS submodule devices\n"); > return r;
* Laurent Pinchart <laurent.pinchart@ideasonboard.com> [220601 06:46]: > Hello Lin, > > Thank you for the patch. > > On Wed, Jun 01, 2022 at 08:48:58AM +0400, Miaoqian Lin wrote: > > omapdss_find_dss_of_node() calls of_find_compatible_node() to get device > > node. of_find_compatible_node() returns a node pointer with refcount > > incremented, we should use of_node_put() on it when done. > > Add missing of_node_put() in later error path and normal path. > > > > Fixes: e0c827aca0730 ("drm/omap: Populate DSS children in omapdss driver") > > Signed-off-by: Miaoqian Lin <linmq006@gmail.com> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks applying this into omap-for-v5.20/soc. Regards, Tony
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index 21413a9b7b6c..ed2cb2649cf6 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c @@ -259,11 +259,13 @@ static int __init omapdss_init_of(void) if (!pdev) { pr_err("Unable to find DSS platform device\n"); + of_node_put(node); return -ENODEV; } r = of_platform_populate(node, NULL, NULL, &pdev->dev); put_device(&pdev->dev); + of_node_put(node); if (r) { pr_err("Unable to populate DSS submodule devices\n"); return r;
omapdss_find_dss_of_node() calls of_find_compatible_node() to get device node. of_find_compatible_node() returns a node pointer with refcount incremented, we should use of_node_put() on it when done. Add missing of_node_put() in later error path and normal path. Fixes: e0c827aca0730 ("drm/omap: Populate DSS children in omapdss driver") Signed-off-by: Miaoqian Lin <linmq006@gmail.com> --- arch/arm/mach-omap2/display.c | 2 ++ 1 file changed, 2 insertions(+)