From 971bedc19b6419d27d63a69fe1b0fc3f0340692d Mon Sep 17 00:00:00 2001 From: Andrzej Pietrasiewicz Date: Thu, 25 Aug 2011 07:21:21 -0300 Subject: [PATCH] --- yaml --- r: 271763 b: refs/heads/master c: a6bd62be5a3e3a2eee9c0c1d7c04cb52cff3e073 h: refs/heads/master i: 271761: 4797ee1f248f5eca72f86b2c7fd20e744940b4c7 271759: 8300c568bf6dc61bcdb8767675dc2ece1d2437fa v: v3 --- [refs] | 2 +- trunk/drivers/media/video/v4l2-mem2mem.c | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 54e105b0fb14..bceb5f752676 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1d0c86cad38678fa42f6d048a7b9e4057c8c16fc +refs/heads/master: a6bd62be5a3e3a2eee9c0c1d7c04cb52cff3e073 diff --git a/trunk/drivers/media/video/v4l2-mem2mem.c b/trunk/drivers/media/video/v4l2-mem2mem.c index 3b15bf5892a8..975d0fa938c6 100644 --- a/trunk/drivers/media/video/v4l2-mem2mem.c +++ b/trunk/drivers/media/video/v4l2-mem2mem.c @@ -97,11 +97,12 @@ void *v4l2_m2m_next_buf(struct v4l2_m2m_queue_ctx *q_ctx) spin_lock_irqsave(&q_ctx->rdy_spinlock, flags); - if (list_empty(&q_ctx->rdy_queue)) - goto end; + if (list_empty(&q_ctx->rdy_queue)) { + spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags); + return NULL; + } b = list_entry(q_ctx->rdy_queue.next, struct v4l2_m2m_buffer, list); -end: spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags); return &b->vb; } @@ -117,12 +118,13 @@ void *v4l2_m2m_buf_remove(struct v4l2_m2m_queue_ctx *q_ctx) unsigned long flags; spin_lock_irqsave(&q_ctx->rdy_spinlock, flags); - if (!list_empty(&q_ctx->rdy_queue)) { - b = list_entry(q_ctx->rdy_queue.next, struct v4l2_m2m_buffer, - list); - list_del(&b->list); - q_ctx->num_rdy--; + if (list_empty(&q_ctx->rdy_queue)) { + spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags); + return NULL; } + b = list_entry(q_ctx->rdy_queue.next, struct v4l2_m2m_buffer, list); + list_del(&b->list); + q_ctx->num_rdy--; spin_unlock_irqrestore(&q_ctx->rdy_spinlock, flags); return &b->vb;