diff options
author | Tuukka Toivonen <tuukka.o.toivonen@nokia.com> | 2009-07-23 09:56:25 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-12-05 15:40:40 -0500 |
commit | 7cbefad085c9112d0b1814db18423e5da072f5c8 (patch) | |
tree | 0cfe7890db3e487f45255a1ea4e790c381823cf6 /drivers/media/video/videobuf-dma-sg.c | |
parent | 131db3a1acbd947a9c3257b95ee860a58ce0dffa (diff) |
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.c | 4 |
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, | |||
588 | retval = -EBUSY; | 588 | retval = -EBUSY; |
589 | goto done; | 589 | goto done; |
590 | } | 590 | } |
591 | size += q->bufs[last]->bsize; | 591 | size += PAGE_ALIGN(q->bufs[last]->bsize); |
592 | if (size == (vma->vm_end - vma->vm_start)) | 592 | if (size == (vma->vm_end - vma->vm_start)) |
593 | break; | 593 | break; |
594 | } | 594 | } |
@@ -610,7 +610,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q, | |||
610 | continue; | 610 | continue; |
611 | q->bufs[i]->map = map; | 611 | q->bufs[i]->map = map; |
612 | q->bufs[i]->baddr = vma->vm_start + size; | 612 | q->bufs[i]->baddr = vma->vm_start + size; |
613 | size += q->bufs[i]->bsize; | 613 | size += PAGE_ALIGN(q->bufs[i]->bsize); |
614 | } | 614 | } |
615 | 615 | ||
616 | map->count = 1; | 616 | map->count = 1; |