]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Mar 2019 20:34:49 +0000 (05:34 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Mar 2019 20:34:49 +0000 (05:34 +0900)
added patches:
media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch

queue-3.18/media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch b/queue-3.18/media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch
new file mode 100644 (file)
index 0000000..cb13dc8
--- /dev/null
@@ -0,0 +1,49 @@
+From f45f3f753b0a3d739acda8e311b4f744d82dc52a Mon Sep 17 00:00:00 2001
+From: Hans Verkuil <hverkuil@xs4all.nl>
+Date: Tue, 18 Dec 2018 08:37:08 -0500
+Subject: media: v4l2-ctrls.c/uvc: zero v4l2_event
+
+From: Hans Verkuil <hverkuil@xs4all.nl>
+
+commit f45f3f753b0a3d739acda8e311b4f744d82dc52a upstream.
+
+Control events can leak kernel memory since they do not fully zero the
+event. The same code is present in both v4l2-ctrls.c and uvc_ctrl.c, so
+fix both.
+
+It appears that all other event code is properly zeroing the structure,
+it's these two places.
+
+Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
+Reported-by: syzbot+4f021cf3697781dbd9fb@syzkaller.appspotmail.com
+Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/usb/uvc/uvc_ctrl.c     |    2 +-
+ drivers/media/v4l2-core/v4l2-ctrls.c |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/usb/uvc/uvc_ctrl.c
++++ b/drivers/media/usb/uvc/uvc_ctrl.c
+@@ -1202,7 +1202,7 @@ static void uvc_ctrl_fill_event(struct u
+       __uvc_query_v4l2_ctrl(chain, ctrl, mapping, &v4l2_ctrl);
+-      memset(ev->reserved, 0, sizeof(ev->reserved));
++      memset(ev, 0, sizeof(*ev));
+       ev->type = V4L2_EVENT_CTRL;
+       ev->id = v4l2_ctrl.id;
+       ev->u.ctrl.value = value;
+--- a/drivers/media/v4l2-core/v4l2-ctrls.c
++++ b/drivers/media/v4l2-core/v4l2-ctrls.c
+@@ -1208,7 +1208,7 @@ static u32 user_flags(const struct v4l2_
+ static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes)
+ {
+-      memset(ev->reserved, 0, sizeof(ev->reserved));
++      memset(ev, 0, sizeof(*ev));
+       ev->type = V4L2_EVENT_CTRL;
+       ev->id = ctrl->id;
+       ev->u.ctrl.changes = changes;
index 6e649ae56427393d76dfe7b5b06419f36d0e66a4..99b63a748a70e02b789b6729d0080232b47a3f3b 100644 (file)
@@ -4,3 +4,4 @@ ext4-fix-null-pointer-dereference-while-journal-is-aborted.patch
 ext4-fix-data-corruption-caused-by-unaligned-direct-aio.patch
 ext4-brelse-all-indirect-buffer-in-ext4_ind_remove_space.patch
 mmc-tmio_mmc_core-don-t-claim-spurious-interrupts.patch
+media-v4l2-ctrls.c-uvc-zero-v4l2_event.patch