[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