linux/drivers/media/v4l2-core
Hans Verkuil 9c9cb1fad8 [media] v4l2-ctrls: fix rounding calculation
Commit 958c7c7e65 ("[media] v4l2-ctrls: fix corner case in round-to-range code") broke
controls that use a negative range.

The cause was a s32/u32 mixup: ctrl->step is unsigned while all others are signed. So
the result type of the expression '(ctrl)->maximum - ((ctrl)->step / 2)' became unsigned,
making 'val >= (ctrl)->maximum - ((ctrl)->step / 2)' true, since '((u32)-128) > 128'
(if val = -128, maximum = 128 and step = 1).

So carefully cast (step / 2) to s32.

There was one cast of step to s32 where it should have been u32 because both offset and
step are unsigned, so casting to signed makes no sense there. You do need a cast to u32
there, because otherwise architectures that have no 64-bit division start complaining
(step is a u64).

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-07-27 17:51:37 -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] v4l2-ctrls: fix rounding calculation 2014-07-27 17:51:37 -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] media: v4l2-core: v4l2-dv-timings.c: Cleaning up code wrong value used in aspect ratio 2014-06-19 13:14:18 -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: don't set PRIV_MAGIC unconditionally in g_fmt() 2014-07-22 00:44:43 -03:00
v4l2-mem2mem.c [media] v4l2-mem2mem: export v4l2_m2m_try_schedule 2014-07-22 12:06:50 -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-subdev: Fix compilation when !VIDEO_V4L2_SUBDEV_API 2014-07-22 01:44:55 -03:00
videobuf2-core.c [media] vb2: fix vb2_poll for output streams 2014-07-25 19:20:04 -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
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] vmalloc_sg: make sure all pages in vmalloc area are really DMA-ready 2014-07-26 11:33:15 -03:00
videobuf-dvb.c
videobuf-vmalloc.c [media] Revert "[media] videobuf_vm_{open,close} race fixes" 2014-02-04 06:29:46 -02:00