]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.9/media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / queue-4.9 / media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch
1 From f45f3f753b0a3d739acda8e311b4f744d82dc52a Mon Sep 17 00:00:00 2001
2 From: Hans Verkuil <hverkuil@xs4all.nl>
3 Date: Tue, 18 Dec 2018 08:37:08 -0500
4 Subject: media: v4l2-ctrls.c/uvc: zero v4l2_event
5
6 From: Hans Verkuil <hverkuil@xs4all.nl>
7
8 commit f45f3f753b0a3d739acda8e311b4f744d82dc52a upstream.
9
10 Control events can leak kernel memory since they do not fully zero the
11 event. The same code is present in both v4l2-ctrls.c and uvc_ctrl.c, so
12 fix both.
13
14 It appears that all other event code is properly zeroing the structure,
15 it's these two places.
16
17 Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
18 Reported-by: syzbot+4f021cf3697781dbd9fb@syzkaller.appspotmail.com
19 Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
20 Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
21 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22
23 ---
24 drivers/media/usb/uvc/uvc_ctrl.c | 2 +-
25 drivers/media/v4l2-core/v4l2-ctrls.c | 2 +-
26 2 files changed, 2 insertions(+), 2 deletions(-)
27
28 --- a/drivers/media/usb/uvc/uvc_ctrl.c
29 +++ b/drivers/media/usb/uvc/uvc_ctrl.c
30 @@ -1203,7 +1203,7 @@ static void uvc_ctrl_fill_event(struct u
31
32 __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl);
33
34 - memset(ev->reserved, 0, sizeof(ev->reserved));
35 + memset(ev, 0, sizeof(*ev));
36 ev->type = V4L2_EVENT_CTRL;
37 ev->id = v4l2_ctrl.id;
38 ev->u.ctrl.value = value;
39 --- a/drivers/media/v4l2-core/v4l2-ctrls.c
40 +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
41 @@ -1231,7 +1231,7 @@ static u32 user_flags(const struct v4l2_
42
43 static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes)
44 {
45 - memset(ev->reserved, 0, sizeof(ev->reserved));
46 + memset(ev, 0, sizeof(*ev));
47 ev->type = V4L2_EVENT_CTRL;
48 ev->id = ctrl->id;
49 ev->u.ctrl.changes = changes;