| From: Johan Hovold <johan@kernel.org> |
| Date: Mon, 20 Nov 2017 11:45:47 +0100 |
| Subject: backlight: as3711_bl: Fix Device Tree node leaks |
| |
| commit d5318d302e7cf6583ec85a2a8bfbb3a3910ae372 upstream. |
| |
| 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") |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Acked-by: Daniel Thompson <daniel.thompson@linaro.org> |
| Signed-off-by: Lee Jones <lee.jones@linaro.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/video/backlight/as3711_bl.c | 12 ++++++------ |
| include/linux/mfd/as3711.h | 4 ++-- |
| 2 files changed, 8 insertions(+), 8 deletions(-) |
| |
| --- 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(str |
| |
| 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(str |
| 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 |
| |
| 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 |
| |
| if (pdata->su2_fb) { |
| su = &supply->su2; |
| - su->fb_name = pdata->su2_fb; |
| su->type = AS3711_BL_SU2; |
| |
| switch (pdata->su2_fbprot) { |
| --- a/include/linux/mfd/as3711.h |
| +++ b/include/linux/mfd/as3711.h |
| @@ -107,9 +107,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; |