summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuho Choi <dbgh9129@gmail.com>2026-04-20 08:19:26 +0300
committerHelge Deller <deller@gmx.de>2026-04-22 16:45:38 +0300
commit9b8a9a3a6f57edd02b7c8db14a316e6fab7fa772 (patch)
tree320941909146d24172c396d0ddc1da0f1fbf899d
parent869b93ba04088713596e68453c1146f52f713290 (diff)
downloadlinux-9b8a9a3a6f57edd02b7c8db14a316e6fab7fa772.tar.xz
fbdev: savage: fix probe-path EDID cleanup leaks
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>
-rw-r--r--drivers/video/fbdev/savage/savagefb_driver.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c
index ac41f8f37589..c2f79357c8da 100644
--- a/drivers/video/fbdev/savage/savagefb_driver.c
+++ b/drivers/video/fbdev/savage/savagefb_driver.c
@@ -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);