Hi Laurent, > Subject: Re: [PATCH v2] drm: rcar-du: Fix memory leak in > rcar_du_vsps_init() > > Hi Biju, > > Thank you for the patch. > > On Thu, Nov 16, 2023 at 12:24:24PM +0000, Biju Das wrote: > > The rcar_du_vsps_init() doesn't free the np allocated by > > of_parse_phandle_with_fixed_args() for the non-error case. > > > > Fix memory leak for the non-error case. > > > > While at it, replace the label 'error'->'done' as it applies to > > non-error case as well and update the error check condition for > > rcar_du_vsp_init() to avoid breakage in future, if it returns positive > value. > > > > Fixes: 3e81374e2014 ("drm: rcar-du: Support multiple sources from the > > same VSP") > > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > > Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> Can it be applied to rcar-du tree as in MAINTAINERS entry? Or it has to go through drm-misc-next? Cheers, Biju > > > --- > > v1->v2: > > * Replaced the label 'error'->'done' as it applies to non-error case as > > well. > > * Update the error check condition for rcar_du_vsp_init() to avoid > > breakage in future, if it returns positive value. > > --- > > drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 10 ++++------ > > 1 file changed, 4 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > index 70d8ad065bfa..4c8fe83dd610 100644 > > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > @@ -705,7 +705,7 @@ static int rcar_du_vsps_init(struct rcar_du_device > *rcdu) > > ret = of_parse_phandle_with_fixed_args(np, vsps_prop_name, > > cells, i, &args); > > if (ret < 0) > > - goto error; > > + goto done; > > > > /* > > * Add the VSP to the list or update the corresponding > existing @@ > > -743,13 +743,11 @@ static int rcar_du_vsps_init(struct rcar_du_device > *rcdu) > > vsp->dev = rcdu; > > > > ret = rcar_du_vsp_init(vsp, vsps[i].np, vsps[i].crtcs_mask); > > - if (ret < 0) > > - goto error; > > + if (ret) > > + goto done; > > } > > > > - return 0; > > - > > -error: > > +done: > > for (i = 0; i < ARRAY_SIZE(vsps); ++i) > > of_node_put(vsps[i].np); > > > > -- > Regards, > > Laurent Pinchart