diff options
author | Oleg Nesterov <oleg@tv-sign.ru> | 2007-01-23 20:04:13 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-23 15:49:52 -0800 |
commit | 6a6a0294c1499b9b8b48999516e0797ce3a4f3ae (patch) | |
tree | 0874bc8f4046152e7a3bb21703f18b9242631fa7 | |
parent | 0761fceaf46fdfc1411734e0d42c78e43e9ed67c (diff) |
V4L: buf_qbuf: fix videobuf_queue->stream corruption and lockup
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>
-rw-r--r-- | drivers/media/video/video-buf.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/media/video/video-buf.c b/drivers/media/video/video-buf.c index acc5ea93668..97cc913fc61 100644 --- a/drivers/media/video/video-buf.c +++ b/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; |