linux-pinenote/drivers/media/v4l2-core
Hans Verkuil 8a75ffb81b [media] vb2: fix bytesused == 0 handling
The original report from Nikhil was that if data_offset > 0 and bytesused == 0,
then the check in __verify_length() would fail, even though the spec says that
if bytes_used == 0, then it will be replaced by the actual length of the
buffer.

After digging into it a bit more I realized that there were several other
things wrong:

- in __verify_length() it would use the application-provided length value
  for USERPTR and the vb2 core length for other memory models, but it
  should have used the application-provided length as well for DMABUF.

- in __fill_vb2_buffer() on the other hand it would replace bytesused == 0
  by the application-provided length, even for MMAP buffers where the
  length is determined by the vb2 core.

- in __fill_vb2_buffer() it tries to figure out if all the planes have
  bytesused == 0 before it will decide to replace bytesused by length.
  However, the spec makes no such provision, and it makes for convoluted
  code. So just replace any bytesused == 0 by the proper length.
  The idea behind this was that you could use bytesused to signal empty
  planes, something that is currently not supported. But that is better
  done in the future by using one of the reserved fields in strucy v4l2_plane.

This patch fixes all these issues.

Regards,

	Hans

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Nikhil Devshatwar <nikhil.nd@ti.com>
Cc: Nikhil Devshatwar <nikhil.nd@ti.com>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-07-22 00:04:58 -03:00
..
Kconfig [media] vb2: Add videobuf2-dvb support 2014-04-16 18:59:29 -03:00
Makefile [media] vb2: Add videobuf2-dvb support 2014-04-16 18:59:29 -03:00
tuner-core.c [media] v4l: subdev: Move [gs]_std operation to video ops 2014-05-24 17:11:26 -03:00
v4l2-async.c [media] v4l2-async: Don't use dynamic static allocation 2013-11-08 09:45:43 -02:00
v4l2-clk.c [media] V4L2: add v4l2-clock helpers to register and unregister a fixed-rate clock 2013-10-31 04:31:30 -02:00
v4l2-common.c [media] v4l2-ctrls: increase internal min/max/step/def to 64 bit 2014-07-17 09:18:09 -03:00
v4l2-compat-ioctl32.c [media] v4l: Support extending the v4l2_pix_format structure 2014-07-17 12:44:47 -03:00
v4l2-ctrls.c [media] v4l: ctrls: Unlocked variants of v4l2_ctrl_s_ctrl{,_int64}() 2014-07-21 20:10:48 -03:00
v4l2-dev.c [media] v4l2-dev: don't debug poll unless the debug level > 2 2014-07-17 18:30:36 -03:00
v4l2-device.c [media] v4l: Only get module if it's different than the driver for v4l2_dev 2014-05-13 13:41:44 -03:00
v4l2-dv-timings.c [media] v4l2-dv-timings.c: add the new 4K timings to the list 2014-04-16 18:27:22 -03:00
v4l2-event.c [media] v4l: Add source change event 2014-05-23 19:50:40 -03:00
v4l2-fh.c [media] media: v4l2-core: remove the use of V4L2_FL_USE_FH_PRIO flag 2014-07-04 16:14:22 -03:00
v4l2-ioctl.c [media] v4l2-ioctl: clips, clipcount and bitmap should not be zeroed 2014-07-17 19:38:06 -03:00
v4l2-mem2mem.c [media] mem2mem: make queue lock in v4l2_m2m_poll interruptible 2014-07-04 16:11:44 -03:00
v4l2-of.c [media] v4l: of: Support empty port nodes 2014-03-11 09:38:49 -03:00
v4l2-subdev.c [media] v4l2: integrate support for VIDIOC_QUERY_EXT_CTRL 2014-07-17 10:38:44 -03:00
videobuf-core.c [media] v4l: Tell user space we're using monotonic timestamps 2012-12-21 11:20:51 -02:00
videobuf-dma-contig.c [media] videobuf-dma-contig: fix incorrect argument to vm_iomap_memory() call 2014-05-23 12:54:09 -03:00
videobuf-dma-sg.c [media] Revert "[media] videobuf_vm_{open,close} race fixes" 2014-02-04 06:29:46 -02:00
videobuf-dvb.c
videobuf-vmalloc.c [media] Revert "[media] videobuf_vm_{open,close} race fixes" 2014-02-04 06:29:46 -02:00
videobuf2-core.c [media] vb2: fix bytesused == 0 handling 2014-07-22 00:04:58 -03:00
videobuf2-dma-contig.c [media] videobuf2-dma-contig: allow to vmap contiguous dma buffers 2014-07-04 16:13:21 -03:00
videobuf2-dma-sg.c [media] videobuf2-dma-sg: Fix NULL pointer dereference BUG 2014-05-23 12:18:23 -03:00
videobuf2-dvb.c [media] vb2: Add videobuf2-dvb support 2014-04-16 18:59:29 -03:00
videobuf2-memops.c [media] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call 2012-11-25 17:20:25 -02:00
videobuf2-vmalloc.c [media] videobuf2: add gfp_flags 2013-03-21 13:17:51 -03:00