From: Evgeny Novikov <novi...@ispras.ru>

[ Upstream commit e8d35898a78e34fc854ed9680bc3f9caedab08cd ]

savagefb_probe() calls savage_init_fb_info() that can successfully
allocate memory for info->pixmap.addr but then fail when
fb_alloc_cmap() fails. savagefb_probe() goes to label failed_init and
does not free allocated memory. It is not valid to go to label
failed_mmio since savage_init_fb_info() can fail during memory
allocation as well. So, the patch free allocated memory on the error
handling path in savage_init_fb_info() itself.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Evgeny Novikov <novi...@ispras.ru>
Cc: Antonino Daplas <adap...@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnier...@samsung.com>
Link: 
https://patchwork.freedesktop.org/patch/msgid/20200619162136.9010-1-novi...@ispras.ru
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/video/fbdev/savage/savagefb_driver.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/video/fbdev/savage/savagefb_driver.c 
b/drivers/video/fbdev/savage/savagefb_driver.c
index 3c8ae87f0ea7d..3fd87aeb6c798 100644
--- a/drivers/video/fbdev/savage/savagefb_driver.c
+++ b/drivers/video/fbdev/savage/savagefb_driver.c
@@ -2157,6 +2157,8 @@ static int savage_init_fb_info(struct fb_info *info, 
struct pci_dev *dev,
                        info->flags |= FBINFO_HWACCEL_COPYAREA |
                                       FBINFO_HWACCEL_FILLRECT |
                                       FBINFO_HWACCEL_IMAGEBLIT;
+               else
+                       kfree(info->pixmap.addr);
        }
 #endif
        return err;
-- 
2.25.1



Reply via email to