summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/videobuf-dma-sg.c
diff options
context:
space:
mode:
authorTuukka Toivonen <tuukka.o.toivonen@nokia.com>2009-07-23 15:56:25 +0200
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 21:40:40 +0100
commit7cbefad085c9112d0b1814db18423e5da072f5c8 (patch)
tree0cfe7890db3e487f45255a1ea4e790c381823cf6 /drivers/media/video/videobuf-dma-sg.c
parentV4L/DVB (13164): DocBook/dvb: Starts documenting DVBS2API ioctls (diff)
downloadlinux-7cbefad085c9112d0b1814db18423e5da072f5c8.tar.xz
linux-7cbefad085c9112d0b1814db18423e5da072f5c8.zip
V4L/DVB (13165): videobuf do not force buffer size to be multiple of PAGE_SIZE
When the image size (bytesperline*height) is not multiple of PAGE_SIZE, v4l2 rounded the required buffer size to be multiple of PAGE_SIZE. This prevented user space to store images directly into userptr buffers which were not multiple of PAGE_SIZE. This constraint is removed. The start address is still assumed to be required page-aligned, ie., when v4l2 allocates mmap buffers, the offset between different buffers is page-aligned. Signed-off-by: Tuukka Toivonen <tuukka.o.toivonen@nokia.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/videobuf-dma-sg.c')
-rw-r--r--drivers/media/video/videobuf-dma-sg.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/media/video/videobuf-dma-sg.c b/drivers/media/video/videobuf-dma-sg.c
index 032ebae0134a..a583d394696e 100644
--- a/drivers/media/video/videobuf-dma-sg.c
+++ b/drivers/media/video/videobuf-dma-sg.c
@@ -588,7 +588,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
retval = -EBUSY;
goto done;
}
- size += q->bufs[last]->bsize;
+ size += PAGE_ALIGN(q->bufs[last]->bsize);
if (size == (vma->vm_end - vma->vm_start))
break;
}
@@ -610,7 +610,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
continue;
q->bufs[i]->map = map;
q->bufs[i]->baddr = vma->vm_start + size;
- size += q->bufs[i]->bsize;
+ size += PAGE_ALIGN(q->bufs[i]->bsize);
}
map->count = 1;