aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/usb/uvc
diff options
context:
space:
mode:
authorEzequiel Garcia <elezegarcia@gmail.com>2012-09-26 06:30:34 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-10-06 11:25:21 -0400
commit5712661d643099bda44909cfd75560fcda72c387 (patch)
treeb74b822a070b9de0008d790c9087ab8c9627d8b2 /drivers/media/usb/uvc
parente0f6e4d6ff8d82ca6813f47d12f85224d7491d9e (diff)
[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>
Diffstat (limited to 'drivers/media/usb/uvc')
-rw-r--r--drivers/media/usb/uvc/uvc_queue.c10
-rw-r--r--drivers/media/usb/uvc/uvc_video.c4
-rw-r--r--drivers/media/usb/uvc/uvcvideo.h2
3 files changed, 12 insertions, 4 deletions
diff --git a/drivers/media/usb/uvc/uvc_queue.c b/drivers/media/usb/uvc/uvc_queue.c
index 5577381b5bf0..18a91fae6bc1 100644
--- a/drivers/media/usb/uvc/uvc_queue.c
+++ b/drivers/media/usb/uvc/uvc_queue.c
@@ -122,21 +122,27 @@ static struct vb2_ops uvc_queue_qops = {
122 .buf_finish = uvc_buffer_finish, 122 .buf_finish = uvc_buffer_finish,
123}; 123};
124 124
125void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, 125int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type,
126 int drop_corrupted) 126 int drop_corrupted)
127{ 127{
128 int ret;
129
128 queue->queue.type = type; 130 queue->queue.type = type;
129 queue->queue.io_modes = VB2_MMAP | VB2_USERPTR; 131 queue->queue.io_modes = VB2_MMAP | VB2_USERPTR;
130 queue->queue.drv_priv = queue; 132 queue->queue.drv_priv = queue;
131 queue->queue.buf_struct_size = sizeof(struct uvc_buffer); 133 queue->queue.buf_struct_size = sizeof(struct uvc_buffer);
132 queue->queue.ops = &uvc_queue_qops; 134 queue->queue.ops = &uvc_queue_qops;
133 queue->queue.mem_ops = &vb2_vmalloc_memops; 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 mutex_init(&queue->mutex); 140 mutex_init(&queue->mutex);
137 spin_lock_init(&queue->irqlock); 141 spin_lock_init(&queue->irqlock);
138 INIT_LIST_HEAD(&queue->irqqueue); 142 INIT_LIST_HEAD(&queue->irqqueue);
139 queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0; 143 queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0;
144
145 return 0;
140} 146}
141 147
142/* ----------------------------------------------------------------------------- 148/* -----------------------------------------------------------------------------
diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
index 1c15b4227bdb..57c3076a4625 100644
--- a/drivers/media/usb/uvc/uvc_video.c
+++ b/drivers/media/usb/uvc/uvc_video.c
@@ -1755,7 +1755,9 @@ int uvc_video_init(struct uvc_streaming *stream)
1755 atomic_set(&stream->active, 0); 1755 atomic_set(&stream->active, 0);
1756 1756
1757 /* Initialize the video buffers queue. */ 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 /* Alternate setting 0 should be the default, yet the XBox Live Vision 1762 /* Alternate setting 0 should be the default, yet the XBox Live Vision
1761 * Cam (and possibly other devices) crash or otherwise misbehave if 1763 * Cam (and possibly other devices) crash or otherwise misbehave if
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index 3764040475bb..af216ec45e39 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -600,7 +600,7 @@ extern struct uvc_driver uvc_driver;
600extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id); 600extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id);
601 601
602/* Video buffers queue management. */ 602/* Video buffers queue management. */
603extern void uvc_queue_init(struct uvc_video_queue *queue, 603extern int uvc_queue_init(struct uvc_video_queue *queue,
604 enum v4l2_buf_type type, int drop_corrupted); 604 enum v4l2_buf_type type, int drop_corrupted);
605extern int uvc_alloc_buffers(struct uvc_video_queue *queue, 605extern int uvc_alloc_buffers(struct uvc_video_queue *queue,
606 struct v4l2_requestbuffers *rb); 606 struct v4l2_requestbuffers *rb);