[PATCH v2 4/4] backlight: as3711_bl: fix device-tree node leaks

Daniel Thompson daniel.thompson at linaro.org
Mon Nov 20 11:41:11 UTC 2017


On 20/11/17 10:45, Johan Hovold wrote:
> Two framebuffer device-node names were looked up during probe, but were
> only used as flags to indicate the presence of two framebuffer device.
> 
> Drop the unused framebuffer name along with a likewise unused device
> pointer from the driver data, and update the platform data to pass in
> booleans instead of the framebuffer strings. This allows us do drop the
> node references acquired during probe, which would otherwise leak.
> 
> Note that there are no other in-kernel users of the modified
> platform-data fields.
> 
> Fixes: 59eb2b5e57ea ("drivers/video/backlight/as3711_bl.c: add OF support")
> Cc: Guennadi Liakhovetski <g.liakhovetski at gmx.de>
> Signed-off-by: Johan Hovold <johan at kernel.org>

Acked-by: Daniel Thompson <daniel.thompson at linaro.org>


> ---
>   drivers/video/backlight/as3711_bl.c | 12 ++++++------
>   include/linux/mfd/as3711.h          |  4 ++--
>   2 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/video/backlight/as3711_bl.c b/drivers/video/backlight/as3711_bl.c
> index e55304d5cf07..ca544aa764b8 100644
> --- a/drivers/video/backlight/as3711_bl.c
> +++ b/drivers/video/backlight/as3711_bl.c
> @@ -28,8 +28,6 @@ enum as3711_bl_type {
>   
>   struct as3711_bl_data {
>   	bool powered;
> -	const char *fb_name;
> -	struct device *fb_dev;
>   	enum as3711_bl_type type;
>   	int brightness;
>   	struct backlight_device *bl;
> @@ -273,7 +271,9 @@ static int as3711_backlight_parse_dt(struct device *dev)
>   
>   	fb = of_parse_phandle(bl, "su1-dev", 0);
>   	if (fb) {
> -		pdata->su1_fb = fb->full_name;
> +		of_node_put(fb);
> +
> +		pdata->su1_fb = true;
>   
>   		ret = of_property_read_u32(bl, "su1-max-uA", &pdata->su1_max_uA);
>   		if (pdata->su1_max_uA <= 0)
> @@ -286,7 +286,9 @@ static int as3711_backlight_parse_dt(struct device *dev)
>   	if (fb) {
>   		int count = 0;
>   
> -		pdata->su2_fb = fb->full_name;
> +		of_node_put(fb);
> +
> +		pdata->su2_fb = true;
>   
>   		ret = of_property_read_u32(bl, "su2-max-uA", &pdata->su2_max_uA);
>   		if (pdata->su2_max_uA <= 0)
> @@ -425,7 +427,6 @@ static int as3711_backlight_probe(struct platform_device *pdev)
>   
>   	if (pdata->su1_fb) {
>   		su = &supply->su1;
> -		su->fb_name = pdata->su1_fb;
>   		su->type = AS3711_BL_SU1;
>   
>   		max_brightness = min(pdata->su1_max_uA, 31);
> @@ -436,7 +437,6 @@ static int as3711_backlight_probe(struct platform_device *pdev)
>   
>   	if (pdata->su2_fb) {
>   		su = &supply->su2;
> -		su->fb_name = pdata->su2_fb;
>   		su->type = AS3711_BL_SU2;
>   
>   		switch (pdata->su2_fbprot) {
> diff --git a/include/linux/mfd/as3711.h b/include/linux/mfd/as3711.h
> index 34cc85864be5..ddd0b953323b 100644
> --- a/include/linux/mfd/as3711.h
> +++ b/include/linux/mfd/as3711.h
> @@ -108,9 +108,9 @@ struct as3711_regulator_pdata {
>   };
>   
>   struct as3711_bl_pdata {
> -	const char *su1_fb;
> +	bool su1_fb;
>   	int su1_max_uA;
> -	const char *su2_fb;
> +	bool su2_fb;
>   	int su2_max_uA;
>   	enum as3711_su2_feedback su2_feedback;
>   	enum as3711_su2_fbprot su2_fbprot;
> 


More information about the dri-devel mailing list