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]>
---
 drivers/video/fbdev/hecubafb.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/video/fbdev/hecubafb.c b/drivers/video/fbdev/hecubafb.c
index 3547d58a29cf..dd2af980f3d8 100644
--- a/drivers/video/fbdev/hecubafb.c
+++ b/drivers/video/fbdev/hecubafb.c
@@ -192,7 +192,9 @@ static int hecubafb_probe(struct platform_device *dev)
        info->flags = FBINFO_VIRTFB;
 
        info->fbdefio = &hecubafb_defio;
-       fb_deferred_io_init(info);
+       retval = fb_deferred_io_init(info);
+       if (retval)
+               goto err_fbdefio;
 
        retval = register_framebuffer(info);
        if (retval < 0)
@@ -209,6 +211,8 @@ static int hecubafb_probe(struct platform_device *dev)
 
        return 0;
 err_fbreg:
+       fb_deferred_io_cleanup(info);
+err_fbdefio:
        framebuffer_release(info);
 err_fballoc:
        vfree(videomemory);

-- 
2.43.0

Reply via email to