linux/drivers/media
Arnd Bergmann bb9bd87808 drivers/media/dvb-frontends/cxd2841er.c: avoid misleading gcc warning
The addition of jump label support in dynamic_debug caused an unexpected
warning in exactly one file in the kernel:

  drivers/media/dvb-frontends/cxd2841er.c: In function 'cxd2841er_tune_tc':
  include/linux/dynamic_debug.h:134:3: error: 'carrier_offset' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     __dynamic_dev_dbg(&descriptor, dev, fmt, \
     ^~~~~~~~~~~~~~~~~
  drivers/media/dvb-frontends/cxd2841er.c:3177:11: note: 'carrier_offset' was declared here
    int ret, carrier_offset;
             ^~~~~~~~~~~~~~

The problem seems to be that the compiler gets confused by the extra
conditionals in static_branch_unlikely, to the point where it can no
longer keep track of which branches have already been taken, and it
doesn't realize that this variable is now always initialized when it
gets used.

I have done lots of randconfig kernel builds and could not find any
other file with this behavior, so I assume it's a rare enough glitch
that we don't need to change the jump label support but instead just
work around the warning in the driver.

To achieve that, I'm moving the check for the return value into the
switch() statement, which is an obvious transformation, but is enough to
un-confuse the compiler here.  The resulting code is not as nice to
read, but at least we retain the behavior of warning if it gets changed
to actually access an uninitialized carrier offset value in the future.

Link: http://lkml.kernel.org/r/20160713204342.1221511-1-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Abylay Ospan <aospan@netup.ru>
Cc: Sergey Kozlov <serjk@netup.ru>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Jason Baron <jbaron@akamai.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-08-04 08:50:07 -04:00
..
common [media] v4l2-tpg: ignore V4L2_DV_RGB_RANGE setting for YUV formats 2016-07-08 16:16:52 -03:00
dvb-core [media] doc-rst: add some needed escape codes 2016-07-23 08:05:02 -03:00
dvb-frontends drivers/media/dvb-frontends/cxd2841er.c: avoid misleading gcc warning 2016-08-04 08:50:07 -04:00
firewire [media] dvb: modify core to implement interfaces/entities at MC new gen 2016-01-11 12:18:52 -02:00
i2c [media] adv7511: the h/vsync polarities were always positive 2016-07-12 13:37:41 -03:00
mmc [media] siano: register media controller earlier 2015-02-26 09:10:39 -03:00
pci [media] tw686x: Support VIDIOC_{S,G}_PARM ioctls 2016-07-13 13:34:52 -03:00
platform dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
radio Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-07-27 12:03:20 -07:00
rc ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
tuners [media] it913x: do not allow driver unbind 2016-07-08 17:01:23 -03:00
usb media updates for v4.8-rc1 2016-07-26 18:59:59 -07:00
v4l2-core dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
cec-edid.c [media] cec-edid: add module for EDID CEC helper functions 2016-06-28 09:45:51 -03:00
Kconfig [media] cec: fix Kconfig dependency problems 2016-07-08 18:34:00 -03:00
Makefile [media] cec: fix Kconfig dependency problems 2016-07-08 18:34:00 -03:00
media-device.c [media] media: fix media devnode ioctl/syscall and unregister race 2016-06-15 17:59:28 -03:00
media-devnode.c [media] media: fix media devnode ioctl/syscall and unregister race 2016-06-15 17:59:28 -03:00
media-entity.c [media] media: change pipeline validation return error 2016-04-29 08:07:17 -03:00