From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Date: Mon, 20 Nov 2017 11:41:11 +0000 Subject: Re: [PATCH v2 4/4] backlight: as3711_bl: fix device-tree node leaks Message-Id: List-Id: References: <20171120104547.2639-1-johan@kernel.org> <20171120104547.2639-5-johan@kernel.org> In-Reply-To: <20171120104547.2639-5-johan@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Johan Hovold , Lee Jones Cc: linux-fbdev@vger.kernel.org, Bartlomiej Zolnierkiewicz , Jingoo Han , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Guennadi Liakhovetski 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 > Signed-off-by: Johan Hovold Acked-by: Daniel Thompson > --- > 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; >