forked from Minki/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>
This commit is contained in:
parent
e0f6e4d6ff
commit
5712661d64
@ -122,21 +122,27 @@ static struct vb2_ops uvc_queue_qops = {
|
||||
.buf_finish = uvc_buffer_finish,
|
||||
};
|
||||
|
||||
void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type,
|
||||
int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type,
|
||||
int drop_corrupted)
|
||||
{
|
||||
int ret;
|
||||
|
||||
queue->queue.type = type;
|
||||
queue->queue.io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
queue->queue.drv_priv = queue;
|
||||
queue->queue.buf_struct_size = sizeof(struct uvc_buffer);
|
||||
queue->queue.ops = &uvc_queue_qops;
|
||||
queue->queue.mem_ops = &vb2_vmalloc_memops;
|
||||
vb2_queue_init(&queue->queue);
|
||||
ret = vb2_queue_init(&queue->queue);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
mutex_init(&queue->mutex);
|
||||
spin_lock_init(&queue->irqlock);
|
||||
INIT_LIST_HEAD(&queue->irqqueue);
|
||||
queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
@ -1755,7 +1755,9 @@ int uvc_video_init(struct uvc_streaming *stream)
|
||||
atomic_set(&stream->active, 0);
|
||||
|
||||
/* Initialize the video buffers queue. */
|
||||
uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param);
|
||||
ret = uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Alternate setting 0 should be the default, yet the XBox Live Vision
|
||||
* Cam (and possibly other devices) crash or otherwise misbehave if
|
||||
|
@ -600,7 +600,7 @@ extern struct uvc_driver uvc_driver;
|
||||
extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id);
|
||||
|
||||
/* Video buffers queue management. */
|
||||
extern void uvc_queue_init(struct uvc_video_queue *queue,
|
||||
extern int uvc_queue_init(struct uvc_video_queue *queue,
|
||||
enum v4l2_buf_type type, int drop_corrupted);
|
||||
extern int uvc_alloc_buffers(struct uvc_video_queue *queue,
|
||||
struct v4l2_requestbuffers *rb);
|
||||
|
Loading…
Reference in New Issue
Block a user