linux/drivers/media
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
..
common [media] saa7146: fix compile warning 2014-07-21 19:32:35 -03:00
dvb-core [media] cxusb: TechnoTrend CT2-4400 USB DVB-T2/C tuner support 2014-07-14 21:07:07 -03:00
dvb-frontends [media] rtl2832_sdr: fill FMT buffer size 2014-07-21 21:39:03 -03:00
firewire
i2c [media] adv7180: Remove duplicate unregister call 2014-07-21 19:30:48 -03:00
mmc
parport [media] v4l: Support extending the v4l2_pix_format structure 2014-07-17 12:44:47 -03:00
pci [media] zoran: remove duplicate ZR050_MO_COMP define 2014-07-17 20:07:57 -03:00
platform [media] s5p-mfc: limit the size of the CPB 2014-07-21 16:02:50 -03:00
radio [media] Fix 64-bit division fall-out from 64-bit control ranges 2014-07-17 12:44:38 -03:00
rc [media] rc: add sunxi-ir driver 2014-07-04 14:53:43 -03:00
tuners [media] si2157: Add get_if_frequency callback 2014-07-21 21:29:38 -03:00
usb [media] msi2500: fill FMT buffer size 2014-07-21 23:29:14 -03:00
v4l2-core [media] vb2: fix bytesused == 0 handling 2014-07-22 00:04:58 -03:00
Kconfig [media] Kconfig: sub-driver auto-select SPI bus 2014-07-21 20:34:12 -03:00
Makefile
media-device.c Linux 3.15-rc6 2014-05-21 23:03:15 -03:00
media-devnode.c [media] media: Use a better owner for the media device 2014-05-13 13:39:00 -03:00
media-entity.c [media] media: Check for active links on pads with MEDIA_PAD_FL_MUST_CONNECT flag 2013-12-04 15:03:45 -02:00