| From 9c9f00d836f07eca94911da15fca71c5e608faf9 Mon Sep 17 00:00:00 2001 |
| From: Evgeny Novikov <novikov@ispras.ru> |
| Date: Fri, 19 Jun 2020 19:21:36 +0300 |
| Subject: [PATCH] video: fbdev: savage: fix memory leak on error handling path |
| in probe |
| |
| commit e8d35898a78e34fc854ed9680bc3f9caedab08cd upstream. |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c |
| index 47b78f0138c3..cb608b76cc40 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.27.0 |
| |