| From d2c36b6cfdfcaf10ff9e8c9ce97f2fcb2a64f991 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 24 Mar 2021 19:07:53 +0100 |
| Subject: media: em28xx: fix memory leak |
| |
| From: Muhammad Usama Anjum <musamaanjum@gmail.com> |
| |
| [ Upstream commit 0ae10a7dc8992ee682ff0b1752ff7c83d472eef1 ] |
| |
| If some error occurs, URB buffers should also be freed. If they aren't |
| freed with the dvb here, the em28xx_dvb_fini call doesn't frees the URB |
| buffers as dvb is set to NULL. The function in which error occurs should |
| do all the cleanup for the allocations it had done. |
| |
| Tested the patch with the reproducer provided by syzbot. This patch |
| fixes the memleak. |
| |
| Reported-by: syzbot+889397c820fa56adf25d@syzkaller.appspotmail.com |
| Signed-off-by: Muhammad Usama Anjum <musamaanjum@gmail.com> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/usb/em28xx/em28xx-dvb.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c |
| index 5502a0fb94fd..a19c89009bf3 100644 |
| --- a/drivers/media/usb/em28xx/em28xx-dvb.c |
| +++ b/drivers/media/usb/em28xx/em28xx-dvb.c |
| @@ -1757,6 +1757,7 @@ ret: |
| return result; |
| |
| out_free: |
| + em28xx_uninit_usb_xfer(dev, EM28XX_DIGITAL_MODE); |
| kfree(dvb); |
| dev->dvb = NULL; |
| goto ret; |
| -- |
| 2.30.2 |
| |