[PATCH v5 4/5] simplefb: add goto error path to probe
From: Hans de Goede <hidden>
Date: 2014-11-12 16:15:51
Also in:
linux-arm-kernel, linux-devicetree
Subsystem:
framebuffer layer, simplefb fb driver, the rest · Maintainers:
Helge Deller, Hans de Goede, Linus Torvalds
From: Luc Verhaegen <redacted> Use the usual kernel style of goto error_foo to free resources on probe error. This is a preparation patch for adding clocks support. While at it also update ioremap_wc error return from ENODEV to ENOMEM. Signed-off-by: Luc Verhaegen <redacted> Acked-by: Stephen Warren <redacted> Reviewed-by: Hans de Goede <redacted> Signed-off-by: Hans de Goede <redacted> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Reviewed-by: Maxime Ripard <redacted> Reviewed-by: David Herrmann <redacted> Acked-by: Grant Likely <redacted> -- Changes in v5: -Improved commit message --- drivers/video/fbdev/simplefb.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c
index ec112c1..cdcf1fe 100644
--- a/drivers/video/fbdev/simplefb.c
+++ b/drivers/video/fbdev/simplefb.c@@ -220,8 +220,8 @@ static int simplefb_probe(struct platform_device *pdev) info->apertures = alloc_apertures(1); if (!info->apertures) { - framebuffer_release(info); - return -ENOMEM; + ret = -ENOMEM; + goto error_fb_release; } info->apertures->ranges[0].base = info->fix.smem_start; info->apertures->ranges[0].size = info->fix.smem_len;
@@ -231,8 +231,8 @@ static int simplefb_probe(struct platform_device *pdev) info->screen_base = ioremap_wc(info->fix.smem_start, info->fix.smem_len); if (!info->screen_base) { - framebuffer_release(info); - return -ENODEV; + ret = -ENOMEM; + goto error_fb_release; } info->pseudo_palette = par->palette;
@@ -247,14 +247,18 @@ static int simplefb_probe(struct platform_device *pdev) ret = register_framebuffer(info); if (ret < 0) { dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret); - iounmap(info->screen_base); - framebuffer_release(info); - return ret; + goto error_unmap; } dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node); return 0; + +error_unmap: + iounmap(info->screen_base); +error_fb_release: + framebuffer_release(info); + return ret; } static int simplefb_remove(struct platform_device *pdev)
--
2.1.0