This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/media_tree.git tree:

Subject: [media] media: mem2mem: eliminate possible NULL pointer dereference
Author:  Andrzej Pietrasiewicz <[email protected]>
Date:    Thu Aug 25 07:21:21 2011 -0300

This patch removes the possible NULL pointer dereference in mem2mem
code.

Signed-off-by: Andrzej Pietrasiewicz <[email protected]>
Signed-off-by: Kyungmin Park <[email protected]>
Signed-off-by: Marek Szyprowski <[email protected]>
CC: Pawel Osciak <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/video/v4l2-mem2mem.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

---

http://git.linuxtv.org/media_tree.git?a=commitdiff;h=a6bd62be5a3e3a2eee9c0c1d7c04cb52cff3e073

diff --git a/drivers/media/video/v4l2-mem2mem.c 
b/drivers/media/video/v4l2-mem2mem.c
index 3b15bf5..975d0fa 100644
--- a/drivers/media/video/v4l2-mem2mem.c
+++ b/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;

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to