| From 171e98266cc97beba36a76d8f67941af4da21434 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 19 Jun 2020 19:21:36 +0300 |
| Subject: video: fbdev: savage: fix memory leak on error handling path in probe |
| |
| From: Evgeny Novikov <novikov@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 <novikov@ispras.ru> |
| Cc: Antonino Daplas <adaplas@gmail.com> |
| Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20200619162136.9010-1-novikov@ispras.ru |
| Signed-off-by: Sasha Levin <sashal@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 aab312a7d9da3..a542c33f20828 100644 |
| --- a/drivers/video/fbdev/savage/savagefb_driver.c |
| +++ b/drivers/video/fbdev/savage/savagefb_driver.c |
| @@ -2158,6 +2158,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 |
| |