]> git.baikalelectronics.ru Git - kernel.git/commit
treewide: fix potentially dangerous trailing ';' in #defined values/expressions
authorPhil Carmody <ext-phil.2.carmody@nokia.com>
Thu, 14 Jul 2011 12:07:13 +0000 (15:07 +0300)
committerJiri Kosina <jkosina@suse.cz>
Thu, 21 Jul 2011 12:10:00 +0000 (14:10 +0200)
commitea8352996245170f8619b500563d2bd100de6456
treeac0897eff214f09c89d5f4fbc3c03ef9d010a83c
parentdc48b6af97af9a6e4a514f34d9c31ea2e606ed51
treewide: fix potentially dangerous trailing ';' in #defined values/expressions

All these are instances of
  #define NAME value;
or
  #define NAME(params_opt) value;

These of course fail to build when used in contexts like
  if(foo $OP NAME)
  while(bar $OP NAME)
and may silently generate the wrong code in contexts such as
  foo = NAME + 1;    /* foo = value; + 1; */
  bar = NAME - 1;    /* bar = value; - 1; */
  baz = NAME & quux; /* baz = value; & quux; */

Reported on comp.lang.c,
Message-ID: <ab0d55fe-25e5-482b-811e-c475aa6065c3@c29g2000yqd.googlegroups.com>
Initial analysis of the dangers provided by Keith Thompson in that thread.

There are many more instances of more complicated macros having unnecessary
trailing semicolons, but this pile seems to be all of the cases of simple
values suffering from the problem. (Thus things that are likely to be found
in one of the contexts above, more complicated ones aren't.)

Signed-off-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
35 files changed:
Documentation/DocBook/v4l/io.xml
arch/alpha/include/asm/floppy.h
arch/h8300/kernel/setup.c
arch/ia64/include/asm/sn/tioce.h
arch/mips/include/asm/floppy.h
arch/parisc/include/asm/dma-mapping.h
arch/parisc/math-emu/decode_exc.c
arch/powerpc/include/asm/elf.h
arch/powerpc/include/asm/smu.h
arch/sparc/include/asm/elf_64.h
arch/um/sys-i386/signal.c
arch/x86/kernel/i387.c
drivers/acpi/ac.c
drivers/acpi/battery.c
drivers/acpi/sbs.c
drivers/gpu/drm/sis/sis_drv.h
drivers/hwmon/gl520sm.c
drivers/isdn/i4l/isdn_bsdcomp.c
drivers/net/bsd_comp.c
drivers/net/natsemi.c
drivers/net/r8169.c
drivers/net/s2io.h
drivers/net/wireless/iwlegacy/iwl-commands.h
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/rtlwifi/rtl8192ce/reg.h
drivers/scsi/device_handler/scsi_dh_rdac.c
drivers/scsi/lpfc/lpfc_hw.h
drivers/usb/otg/twl4030-usb.c
drivers/video/i810/i810.h
include/linux/ceph/libceph.h
include/linux/mfd/tps65910.h
include/scsi/scsi.h
include/sound/soundfont.h
mm/slub.c
net/mac80211/mesh_hwmp.c