]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fbdev: savage: fix probe-path EDID cleanup leaks
authorYuho Choi <dbgh9129@gmail.com>
Mon, 20 Apr 2026 05:19:26 +0000 (01:19 -0400)
committerHelge Deller <deller@gmx.de>
Wed, 22 Apr 2026 13:45:38 +0000 (15:45 +0200)
When CONFIG_FB_SAVAGE_I2C is enabled, savagefb_probe() can build both an
EDID-derived monspecs.modedb and a modelist from it before later failing.

The normal success path frees monspecs.modedb after the initial mode selection,
but the probe error path only deletes the I2C busses and misses the
EDID-derived allocations.

Free both the modelist and monspecs.modedb on the failed: unwind path.

Co-developed-by: Myeonghun Pak <mhun512@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Co-developed-by: Taegyu Kim <tmk5904@psu.edu>
Signed-off-by: Taegyu Kim <tmk5904@psu.edu>
Signed-off-by: Yuho Choi <dbgh9129@gmail.com>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/savage/savagefb_driver.c

index ac41f8f37589f45dc1fb1cda493c0f4b0537f688..c2f79357c8da0c488c668e7b67d86447969e9917 100644 (file)
@@ -2322,6 +2322,8 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id)
  failed:
 #ifdef CONFIG_FB_SAVAGE_I2C
        savagefb_delete_i2c_busses(info);
+       fb_destroy_modelist(&info->modelist);
+       fb_destroy_modedb(info->monspecs.modedb);
 #endif
        fb_alloc_cmap(&info->cmap, 0, 0);
        savage_unmap_video(info);