Am 14.05.26 um 10:24 schrieb Abdun Nihaal:
The memory allocated for pagerefs in fb_deferred_io_init() is not freed
on the error path. Fix it by calling fb_deferred_io_cleanup().

Fixes: 56c134f7f1b5 ("fbdev: Track deferred-I/O pages in pageref struct")
Cc: [email protected]
Signed-off-by: Abdun Nihaal <[email protected]>

Reviewed-by: Thomas Zimmermann <[email protected]>

---
  drivers/video/fbdev/broadsheetfb.c | 8 ++++++--
  1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/broadsheetfb.c 
b/drivers/video/fbdev/broadsheetfb.c
index c8ba098a8c42..582f1ee4c9b6 100644
--- a/drivers/video/fbdev/broadsheetfb.c
+++ b/drivers/video/fbdev/broadsheetfb.c
@@ -1072,12 +1072,14 @@ static int broadsheetfb_probe(struct platform_device 
*dev)
        info->flags = FBINFO_VIRTFB;
info->fbdefio = &broadsheetfb_defio;
-       fb_deferred_io_init(info);
+       retval = fb_deferred_io_init(info);
+       if (retval)
+               goto err_vfree;
retval = fb_alloc_cmap(&info->cmap, 16, 0);
        if (retval < 0) {
                dev_err(&dev->dev, "Failed to allocate colormap\n");
-               goto err_vfree;
+               goto err_fbdefio;
        }
/* set cmap */
@@ -1121,6 +1123,8 @@ static int broadsheetfb_probe(struct platform_device *dev)
        board->cleanup(par);
  err_cmap:
        fb_dealloc_cmap(&info->cmap);
+err_fbdefio:
+       fb_deferred_io_cleanup(info);
  err_vfree:
        vfree(videomemory);
  err_fb_rel:


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)


Reply via email to