summaryrefslogtreecommitdiff
path: root/linux
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-05-04 12:19:59 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-05-04 12:19:59 -0300
commit1914e147a929348978871e97886ef397c4d78a0a (patch)
tree9495870bdb45d5277950fd1ab538b647b6af29f7 /linux
parenta7c4ba649025928cf465f76f8a4c80ffac78ad09 (diff)
downloadmediapointer-dvb-s2-1914e147a929348978871e97886ef397c4d78a0a.tar.gz
mediapointer-dvb-s2-1914e147a929348978871e97886ef397c4d78a0a.tar.bz2
V4L: Prevent queueing queued buffers.
From: Sakari Ailus <sakari.ailus@nokia.com> videobuf_qbuf queues buffers to q->stream but does not properly check the state of the buffer before queueing. It was possible to queue buffers that already were in the queue. Only buffers that are in states STATE_NEEDS_INIT and STATE_IDLE can be queued. Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux')
-rw-r--r--linux/drivers/media/video/video-buf.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/linux/drivers/media/video/video-buf.c b/linux/drivers/media/video/video-buf.c
index 5564e20af..c053375bb 100644
--- a/linux/drivers/media/video/video-buf.c
+++ b/linux/drivers/media/video/video-buf.c
@@ -708,9 +708,7 @@ videobuf_qbuf(struct videobuf_queue *q,
dprintk(1,"qbuf: memory type is wrong.\n");
goto done;
}
- if (buf->state == STATE_QUEUED ||
- buf->state == STATE_PREPARED ||
- buf->state == STATE_ACTIVE) {
+ if (buf->state != STATE_NEEDS_INIT && buf->state != STATE_IDLE) {
dprintk(1,"qbuf: buffer is already queued or active.\n");
goto done;
}