[PATCH v2] drm: rcar-du: Fix memory leak in rcar_du_vsps_init()

Biju Das biju.das.jz at bp.renesas.com
Thu Jan 4 11:04:37 UTC 2024


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 at bp.renesas.com>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>

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


More information about the dri-devel mailing list