]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fbdev: metronomefb: fix potential memory leak in metronomefb_probe()
authorAbdun Nihaal <nihaal@cse.iitm.ac.in>
Thu, 14 May 2026 08:24:32 +0000 (13:54 +0530)
committerHelge Deller <deller@gmx.de>
Sun, 7 Jun 2026 16:25:42 +0000 (18:25 +0200)
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: stable@vger.kernel.org
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/metronomefb.c

index 6f0942c6e5f1c68d97b6d6db598bda839a8cae04..83c614963a0a683ac0712e6efa4e17e1a65a2f26 100644 (file)
@@ -645,12 +645,14 @@ static int metronomefb_probe(struct platform_device *dev)
        info->flags = FBINFO_VIRTFB;
 
        info->fbdefio = &metronomefb_defio;
-       fb_deferred_io_init(info);
+       retval = fb_deferred_io_init(info);
+       if (retval)
+               goto err_free_irq;
 
        retval = fb_alloc_cmap(&info->cmap, 8, 0);
        if (retval < 0) {
                dev_err(&dev->dev, "Failed to allocate colormap\n");
-               goto err_free_irq;
+               goto err_fbdefio;
        }
 
        /* set cmap */
@@ -673,6 +675,8 @@ static int metronomefb_probe(struct platform_device *dev)
 
 err_cmap:
        fb_dealloc_cmap(&info->cmap);
+err_fbdefio:
+       fb_deferred_io_cleanup(info);
 err_free_irq:
        board->cleanup(par);
 err_csum_table: