]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: vb2: check memory model for VIDIOC_CREATE_BUFS
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 8 Nov 2018 12:23:37 +0000 (07:23 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 16:46:02 +0000 (17:46 +0100)
commit 62dcb4f41836bd3c44b5b651bb6df07ea4cb1551 upstream.

vb2_core_create_bufs did not check if the memory model for newly added
buffers is the same as for already existing buffers. It should return an
error if they aren't the same.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reported-by: syzbot+e1fb118a2ebb88031d21@syzkaller.appspotmail.com
Cc: <stable@vger.kernel.org> # for v4.16 and up
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/common/videobuf2/videobuf2-core.c

index 8ff8722cb6b16dbf9b742eee7911dadba3037159..99f736c812863a840b465efea55b0fa4e4e38485 100644 (file)
@@ -812,6 +812,9 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
                memset(q->alloc_devs, 0, sizeof(q->alloc_devs));
                q->memory = memory;
                q->waiting_for_buffers = !q->is_output;
+       } else if (q->memory != memory) {
+               dprintk(1, "memory model mismatch\n");
+               return -EINVAL;
        }
 
        num_buffers = min(*count, VB2_MAX_FRAME - q->num_buffers);