| From 0d14635e4e8f7e26602941f454f60f70886ce410 Mon Sep 17 00:00:00 2001 |
| From: Oleg Nesterov <oleg@tv-sign.ru> |
| Date: Tue, 23 Jan 2007 20:04:13 -0300 |
| Subject: [PATCH] V4L: buf_qbuf: fix videobuf_queue->stream corruption and lockup |
| |
| From: Oleg Nesterov <oleg@tv-sign.ru> |
| |
| We are doing ->buf_prepare(buf) before adding buf to q->stream list. This |
| means that videobuf_qbuf() should not try to re-add a STATE_PREPARED buffer. |
| |
| (cherry picked from commit 419dd8378dfa32985672ab7927b4bc827f33b332) |
| |
| Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> |
| Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/media/video/video-buf.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- linux-2.6.18.7.orig/drivers/media/video/video-buf.c |
| +++ linux-2.6.18.7/drivers/media/video/video-buf.c |
| @@ -695,6 +695,7 @@ videobuf_qbuf(struct videobuf_queue *q, |
| goto done; |
| } |
| if (buf->state == STATE_QUEUED || |
| + buf->state == STATE_PREPARED || |
| buf->state == STATE_ACTIVE) { |
| dprintk(1,"qbuf: buffer is already queued or active.\n"); |
| goto done; |