Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] uvc: Add return code check at vb2_queue_init()

This function returns an integer and it's mandatory
to check the return code.

Signed-off-by: Ezequiel Garcia <elezegarcia@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Ezequiel Garcia and committed by
Mauro Carvalho Chehab
5712661d e0f6e4d6

+12 -4
+8 -2
drivers/media/usb/uvc/uvc_queue.c
··· 122 122 .buf_finish = uvc_buffer_finish, 123 123 }; 124 124 125 - void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, 125 + int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, 126 126 int drop_corrupted) 127 127 { 128 + int ret; 129 + 128 130 queue->queue.type = type; 129 131 queue->queue.io_modes = VB2_MMAP | VB2_USERPTR; 130 132 queue->queue.drv_priv = queue; 131 133 queue->queue.buf_struct_size = sizeof(struct uvc_buffer); 132 134 queue->queue.ops = &uvc_queue_qops; 133 135 queue->queue.mem_ops = &vb2_vmalloc_memops; 134 - vb2_queue_init(&queue->queue); 136 + ret = vb2_queue_init(&queue->queue); 137 + if (ret) 138 + return ret; 135 139 136 140 mutex_init(&queue->mutex); 137 141 spin_lock_init(&queue->irqlock); 138 142 INIT_LIST_HEAD(&queue->irqqueue); 139 143 queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0; 144 + 145 + return 0; 140 146 } 141 147 142 148 /* -----------------------------------------------------------------------------
+3 -1
drivers/media/usb/uvc/uvc_video.c
··· 1755 1755 atomic_set(&stream->active, 0); 1756 1756 1757 1757 /* Initialize the video buffers queue. */ 1758 - uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param); 1758 + ret = uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param); 1759 + if (ret) 1760 + return ret; 1759 1761 1760 1762 /* Alternate setting 0 should be the default, yet the XBox Live Vision 1761 1763 * Cam (and possibly other devices) crash or otherwise misbehave if
+1 -1
drivers/media/usb/uvc/uvcvideo.h
··· 600 600 extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id); 601 601 602 602 /* Video buffers queue management. */ 603 - extern void uvc_queue_init(struct uvc_video_queue *queue, 603 + extern int uvc_queue_init(struct uvc_video_queue *queue, 604 604 enum v4l2_buf_type type, int drop_corrupted); 605 605 extern int uvc_alloc_buffers(struct uvc_video_queue *queue, 606 606 struct v4l2_requestbuffers *rb);