diff options
author | Ezequiel Garcia <elezegarcia@gmail.com> | 2012-09-26 06:30:34 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-10-06 11:25:21 -0400 |
commit | 5712661d643099bda44909cfd75560fcda72c387 (patch) | |
tree | b74b822a070b9de0008d790c9087ab8c9627d8b2 /drivers/media/usb/uvc | |
parent | e0f6e4d6ff8d82ca6813f47d12f85224d7491d9e (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.c | 10 | ||||
-rw-r--r-- | drivers/media/usb/uvc/uvc_video.c | 4 | ||||
-rw-r--r-- | drivers/media/usb/uvc/uvcvideo.h | 2 |
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 | ||
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 | 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; | |||
600 | extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id); | 600 | extern 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. */ |
603 | extern void uvc_queue_init(struct uvc_video_queue *queue, | 603 | extern 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); |
605 | extern int uvc_alloc_buffers(struct uvc_video_queue *queue, | 605 | extern int uvc_alloc_buffers(struct uvc_video_queue *queue, |
606 | struct v4l2_requestbuffers *rb); | 606 | struct v4l2_requestbuffers *rb); |