]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
V4L: buf_qbuf: fix videobuf_queue->stream corruption and lockup
authorOleg Nesterov <oleg@tv-sign.ru>
Tue, 23 Jan 2007 23:04:13 +0000 (20:04 -0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 24 Feb 2007 00:24:25 +0000 (16:24 -0800)
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

index f429f49901b9a0394980f1aea61f2715eb9ddc63..3f65fb612ea877f935a912a5bb549b06df8ac86d 100644 (file)
@@ -700,6 +700,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;