Message ID | 20221118141431.3005015-1-dzm91@hust.edu.cn (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | fbdev: da8xx-fb: add missing regulator_disable() in fb_probe | expand |
On 11/18/22 15:14, Dongliang Mu wrote: > The error handling code in fb_probe misses regulator_disable if > regulator_enable is called successfully. The previous commit only > adds regulator_disable in the .remove(), forgetting the error > handling code in the .probe. > > Fix this by adding a new error label to call regulator_disable. > > Fixes: 611097d5daea("fbdev: da8xx: add support for a regulator") > Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn> applied. Thanks! Helge > --- > drivers/video/fbdev/da8xx-fb.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/video/fbdev/da8xx-fb.c b/drivers/video/fbdev/da8xx-fb.c > index 11922b009ed7..cd07e401b326 100644 > --- a/drivers/video/fbdev/da8xx-fb.c > +++ b/drivers/video/fbdev/da8xx-fb.c > @@ -1431,7 +1431,7 @@ static int fb_probe(struct platform_device *device) > dev_err(&device->dev, > "GLCD: kmalloc for frame buffer failed\n"); > ret = -EINVAL; > - goto err_release_fb; > + goto err_disable_reg; > } > > da8xx_fb_info->screen_base = (char __iomem *) par->vram_virt; > @@ -1475,7 +1475,7 @@ static int fb_probe(struct platform_device *device) > > ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); > if (ret) > - goto err_release_fb; > + goto err_disable_reg; > da8xx_fb_info->cmap.len = par->palette_sz; > > /* initialize var_screeninfo */ > @@ -1529,6 +1529,9 @@ static int fb_probe(struct platform_device *device) > err_dealloc_cmap: > fb_dealloc_cmap(&da8xx_fb_info->cmap); > > +err_disable_reg: > + if (par->lcd_supply) > + regulator_disable(par->lcd_supply); > err_release_fb: > framebuffer_release(da8xx_fb_info); >
diff --git a/drivers/video/fbdev/da8xx-fb.c b/drivers/video/fbdev/da8xx-fb.c index 11922b009ed7..cd07e401b326 100644 --- a/drivers/video/fbdev/da8xx-fb.c +++ b/drivers/video/fbdev/da8xx-fb.c @@ -1431,7 +1431,7 @@ static int fb_probe(struct platform_device *device) dev_err(&device->dev, "GLCD: kmalloc for frame buffer failed\n"); ret = -EINVAL; - goto err_release_fb; + goto err_disable_reg; } da8xx_fb_info->screen_base = (char __iomem *) par->vram_virt; @@ -1475,7 +1475,7 @@ static int fb_probe(struct platform_device *device) ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); if (ret) - goto err_release_fb; + goto err_disable_reg; da8xx_fb_info->cmap.len = par->palette_sz; /* initialize var_screeninfo */ @@ -1529,6 +1529,9 @@ static int fb_probe(struct platform_device *device) err_dealloc_cmap: fb_dealloc_cmap(&da8xx_fb_info->cmap); +err_disable_reg: + if (par->lcd_supply) + regulator_disable(par->lcd_supply); err_release_fb: framebuffer_release(da8xx_fb_info);
The error handling code in fb_probe misses regulator_disable if regulator_enable is called successfully. The previous commit only adds regulator_disable in the .remove(), forgetting the error handling code in the .probe. Fix this by adding a new error label to call regulator_disable. Fixes: 611097d5daea("fbdev: da8xx: add support for a regulator") Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn> --- drivers/video/fbdev/da8xx-fb.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)