aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Zabel <[email protected]>2013-09-19 04:37:29 -0300
committerMauro Carvalho Chehab <[email protected]>2013-10-17 10:53:21 -0300
commitdc77523c5da5513df1bbc74db2a522a94f4cec0e (patch)
tree939bb39d84748d5b5415e942c775352a975a3387
parent8ca5d2d8e58df7235b77ed435e63c484e123fede (diff)
[media] videobuf2-core: call __setup_offsets only for mmap memory type
__setup_offsets fills the v4l2_planes' mem_offset fields, which is only valid for V4L2_MEMORY_MMAP type buffers. For V4L2_MEMORY_DMABUF and _USERPTR buffers, this incorrectly overwrites the fd and userptr fields. Reported-by: Michael Olbrich <[email protected]> Signed-off-by: Philipp Zabel <[email protected]> Acked-by: Marek Szyprowski <[email protected]> Acked-by: Pawel Osciak <[email protected]> Acked-by: Hans Verkuil <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
-rw-r--r--drivers/media/v4l2-core/videobuf2-core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index fc8af507beac..91412d463ba0 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -241,7 +241,8 @@ static int __vb2_queue_alloc(struct vb2_queue *q, enum v4l2_memory memory,
q->bufs[q->num_buffers + buffer] = vb;
}
- __setup_offsets(q, buffer);
+ if (memory == V4L2_MEMORY_MMAP)
+ __setup_offsets(q, buffer);
dprintk(1, "Allocated %d buffers, %d plane(s) each\n",
buffer, num_planes);