Commit 8ca2c80b authored by Sjoerd Simons's avatar Sjoerd Simons Committed by Mauro Carvalho Chehab

[media] uvcvideo: Remove buffers from the queues when freeing

When freeing memory for the video buffers also remove them from the
irq & main queues.

This fixes an oops when doing the following:

open ("/dev/video", ..)
VIDIOC_REQBUFS
VIDIOC_QBUF
VIDIOC_REQBUFS
close ()

As the second VIDIOC_REQBUFS will cause the list entries of the buffers
to be cleared while they still hang around on the main and irc queues
Signed-off-by: default avatarSjoerd Simons <sjoerd.simons@collabora.co.uk>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: stable@kernel.org
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a96aa534
...@@ -104,6 +104,8 @@ static int __uvc_free_buffers(struct uvc_video_queue *queue) ...@@ -104,6 +104,8 @@ static int __uvc_free_buffers(struct uvc_video_queue *queue)
} }
if (queue->count) { if (queue->count) {
uvc_queue_cancel(queue, 0);
INIT_LIST_HEAD(&queue->mainqueue);
vfree(queue->mem); vfree(queue->mem);
queue->count = 0; queue->count = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment