| From 23eb11dddda9c6d97083eb2016b8e150660bae06 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 17 Aug 2019 02:27:46 -0300 |
| Subject: media: cpia2_usb: fix memory leaks |
| |
| From: Wenwen Wang <wenwen@cs.uga.edu> |
| |
| [ Upstream commit 1c770f0f52dca1a2323c594f01f5ec6f1dddc97f ] |
| |
| In submit_urbs(), 'cam->sbuf[i].data' is allocated through kmalloc_array(). |
| However, it is not deallocated if the following allocation for urbs fails. |
| To fix this issue, free 'cam->sbuf[i].data' if usb_alloc_urb() fails. |
| |
| Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/usb/cpia2/cpia2_usb.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/drivers/media/usb/cpia2/cpia2_usb.c b/drivers/media/usb/cpia2/cpia2_usb.c |
| index 21e5454d260a0..30e27844e0e99 100644 |
| --- a/drivers/media/usb/cpia2/cpia2_usb.c |
| +++ b/drivers/media/usb/cpia2/cpia2_usb.c |
| @@ -690,6 +690,10 @@ static int submit_urbs(struct camera_data *cam) |
| if (!urb) { |
| for (j = 0; j < i; j++) |
| usb_free_urb(cam->sbuf[j].urb); |
| + for (j = 0; j < NUM_SBUF; j++) { |
| + kfree(cam->sbuf[j].data); |
| + cam->sbuf[j].data = NULL; |
| + } |
| return -ENOMEM; |
| } |
| |
| -- |
| 2.20.1 |
| |