]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fbdev: ssd1307fb: fix potential page leak in ssd1307fb_probe()
authorAbdun Nihaal <nihaal@cse.iitm.ac.in>
Wed, 3 Dec 2025 03:55:44 +0000 (09:25 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:36 +0000 (13:09 +0100)
[ Upstream commit 164312662ae9764b83b84d97afb25c42eb2be473 ]

The page allocated for vmem using __get_free_pages() is not freed on the
error paths after it. Fix that by adding a corresponding __free_pages()
call to the error path.

Fixes: facd94bc458a ("fbdev: ssd1307fb: Allocate page aligned video memory.")
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/video/fbdev/ssd1307fb.c

index 7acf7c0b263e677e85e19aec7383c15232fbd01d..212494b0a4ba84c4bcc37579d468c93fd78f8b4f 100644 (file)
@@ -732,7 +732,7 @@ static int ssd1307fb_probe(struct i2c_client *client)
        if (!ssd1307fb_defio) {
                dev_err(dev, "Couldn't allocate deferred io.\n");
                ret = -ENOMEM;
-               goto fb_alloc_error;
+               goto fb_defio_error;
        }
 
        ssd1307fb_defio->delay = HZ / refreshrate;
@@ -812,6 +812,8 @@ regulator_enable_error:
                regulator_disable(par->vbat_reg);
 reset_oled_error:
        fb_deferred_io_cleanup(info);
+fb_defio_error:
+       __free_pages(vmem, get_order(vmem_size));
 fb_alloc_error:
        framebuffer_release(info);
        return ret;