linux/drivers/media/v4l2-core
Guennadi Liakhovetski ec77581a6c [media] V4L2: fix VIDIOC_CREATE_BUFS in 64- / 32-bit compatibility mode
If a struct contains 64-bit fields, it is aligned on 64-bit boundaries
within containing structs in 64-bit compilations. This is the case with
struct v4l2_window, which contains pointers and is embedded into struct
v4l2_format, and that one is embedded into struct v4l2_create_buffers.
Unlike some other structs, used as a part of the kernel ABI as ioctl()
arguments, that are packed, these structs aren't packed. This isn't a
problem per se, but the ioctl-compat code for VIDIOC_CREATE_BUFS contains
a bug, that triggers in such 64-bit builds. That code wrongly assumes,
that in struct v4l2_create_buffers, struct v4l2_format immediately follows
the __u32 memory field, which in fact isn't the case. This bug wasn't
visible until now, because until recently hardly any applications used
this ioctl() and mostly embedded 32-bit only drivers implemented it. This
is changing now with addition of this ioctl() to some USB drivers, e.g.
UVC. This patch fixes the bug by copying parts of struct
v4l2_create_buffers separately.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-05-13 20:00:28 -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 Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2013-11-18 15:50:07 -08: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: core: Don't use i2c_client->driver 2013-10-03 22:28:23 +02:00
v4l2-compat-ioctl32.c [media] V4L2: fix VIDIOC_CREATE_BUFS in 64- / 32-bit compatibility mode 2014-05-13 20:00:28 -03:00
v4l2-ctrls.c [media] v4l: add control for RF tuner PLL lock flag 2014-03-13 10:26:49 -03:00
v4l2-dev.c [media] v4l2: add VIDIOC_G/S_EDID support to the v4l2 core 2014-03-11 10:06:53 -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 v4l2_event_subdev_unsubscribe() helper function 2013-02-05 15:04:55 -02:00
v4l2-fh.c [media] v4l, smiapp, smiapp-pll, adp1653: Update contact information 2012-11-21 13:34:50 -02:00
v4l2-ioctl.c [media] v4l2-ioctl.c: fix sparse __user-related warnings 2014-04-16 18:21:04 -03:00
v4l2-mem2mem.c [media] V4L: Add mem2mem ioctl and file operation helpers 2013-12-04 15:34:24 -02:00
v4l2-of.c [media] v4l: of: Support empty port nodes 2014-03-11 09:38:49 -03:00
v4l2-subdev.c [media] v4l: Check pad arguments for [gs]_frame_interval 2014-05-13 13:37:33 -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] Revert "[media] videobuf_vm_{open,close} race fixes" 2014-02-04 06:29:46 -02: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 compiler warning 2014-04-23 10:13:57 -03:00
videobuf2-dma-contig.c dma-buf: avoid using IS_ERR_OR_NULL 2014-02-07 14:21:09 -08:00
videobuf2-dma-sg.c Merge branch 'upstream-fixes' into patchwork 2013-12-13 05:04:00 -02: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