lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <D3253D80-8977-437D-A758-3B3E79F84E27@zzywysm.com>
Date:   Sun, 16 Feb 2020 18:53:07 -0600
From:   Zzy Wysm <zzy@...wysm.com>
To:     linux-kernel@...r.kernel.org
Subject: Linux Warning Report - 5.6-rc2

On February 12, 2020, Linus Torvalds wrote:
"I do not want to see a _single_ warning in the kernel build. Yes, we
have one in the samples code, and even that annoys the hell out of me.”

(Source: <https://lkml.org/lkml/2020/2/12/996>)

A noble goal, and one I endorse.

With that in mind, I decided to see if the Linux kernel truly builds warning-free.  Spoiler: it did not.  I built Linux 5.6-rc2 with gcc 9.2.1-9ubuntu2 using make defconfig.

Result: 33 warnings.

Let me know if you’re interested in:
* regular warning reports
* additional code coverage beyond defconfig
* additional warning types

(Note, I am not a member of this list, please include me directly on any replies.)

Regards,
zzy



zzy@...uivalience:~/linux-5.6-rc2$ make -j6 KCFLAGS="-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers" > build_log_5.6-rc2
kernel/time/hrtimer.c:120:21: warning: initialized field overwritten [-Woverride-init]
  120 |  [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
      |                     ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:120:21: note: (near initialization for ‘hrtimer_clock_to_base_table[0]’)
kernel/time/hrtimer.c:121:22: warning: initialized field overwritten [-Woverride-init]
  121 |  [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
      |                      ^~~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:121:22: note: (near initialization for ‘hrtimer_clock_to_base_table[1]’)
kernel/time/hrtimer.c:122:21: warning: initialized field overwritten [-Woverride-init]
  122 |  [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
      |                     ^~~~~~~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:122:21: note: (near initialization for ‘hrtimer_clock_to_base_table[7]’)
kernel/time/hrtimer.c:123:17: warning: initialized field overwritten [-Woverride-init]
  123 |  [CLOCK_TAI]  = HRTIMER_BASE_TAI,
      |                 ^~~~~~~~~~~~~~~~
kernel/time/hrtimer.c:123:17: note: (near initialization for ‘hrtimer_clock_to_base_table[11]’)
In file included from kernel/bpf/core.c:21:
kernel/bpf/core.c: In function ‘___bpf_prog_run’:
./include/linux/filter.h:863:3: warning: cast between incompatible function types from ‘u64 (*)(u64,  u64,  u64,  u64,  u64)’ {aka ‘long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)’} to ‘u64 (*)(u64,  u64,  u64,  u64,  u64,  const struct bpf_insn *)’ {aka ‘long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  const struct bpf_insn *)’} [-Wcast-function-type]
  863 |  ((u64 (*)(u64, u64, u64, u64, u64, const struct bpf_insn *)) \
      |   ^
kernel/bpf/core.c:1513:13: note: in expansion of macro ‘__bpf_call_base_args’
 1513 |   BPF_R0 = (__bpf_call_base_args + insn->imm)(BPF_R1, BPF_R2,
      |             ^~~~~~~~~~~~~~~~~~~~
kernel/bpf/core.c: In function ‘bpf_patch_call_args’:
./include/linux/filter.h:863:3: warning: cast between incompatible function types from ‘u64 (*)(u64,  u64,  u64,  u64,  u64)’ {aka ‘long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)’} to ‘u64 (*)(u64,  u64,  u64,  u64,  u64,  const struct bpf_insn *)’ {aka ‘long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  const struct bpf_insn *)’} [-Wcast-function-type]
  863 |  ((u64 (*)(u64, u64, u64, u64, u64, const struct bpf_insn *)) \
      |   ^
kernel/bpf/core.c:1704:3: note: in expansion of macro ‘__bpf_call_base_args’
 1704 |   __bpf_call_base_args;
      |   ^~~~~~~~~~~~~~~~~~~~
arch/x86/kernel/jump_label.c:61:1: warning: ‘inline’ is not at beginning of declaration [-Wold-style-declaration]
   61 | static void inline __jump_label_transform(struct jump_entry *entry,
      | ^~~~~~
kernel/trace/blktrace.c: In function ‘__trace_note_message’:
kernel/trace/blktrace.c:145:63: warning: parameter ‘blkcg’ set but not used [-Wunused-but-set-parameter]
  145 | void __trace_note_message(struct blk_trace *bt, struct blkcg *blkcg,
      |                                                 ~~~~~~~~~~~~~~^~~~~
In file included from ./include/linux/capability.h:16,
                 from security/commoncap.c:5:
security/commoncap.c: In function ‘cap_prctl_drop’:
./include/uapi/linux/capability.h:373:27: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
  373 | #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
      |                           ^~
security/commoncap.c:1145:7: note: in expansion of macro ‘cap_valid’
 1145 |  if (!cap_valid(cap))
      |       ^~~~~~~~~
security/commoncap.c: In function ‘cap_task_prctl’:
./include/uapi/linux/capability.h:373:27: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
  373 | #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
      |                           ^~
security/commoncap.c:1175:8: note: in expansion of macro ‘cap_valid’
 1175 |   if (!cap_valid(arg2))
      |        ^~~~~~~~~
./include/uapi/linux/capability.h:373:27: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
  373 | #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
      |                           ^~
security/commoncap.c:1260:10: note: in expansion of macro ‘cap_valid’
 1260 |   if (((!cap_valid(arg3)) | arg4 | arg5))
      |          ^~~~~~~~~
drivers/video/fbdev/core/fbmon.c: In function ‘get_monspecs’:
drivers/video/fbdev/core/fbmon.c:812:47: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  812 |   DPRINTK("      Configurable signal level\n");
      |                                               ^
drivers/video/fbdev/core/fbmon.c:842:24: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
  842 |   DPRINTK("variable\n");
      |                        ^
drivers/video/fbdev/core/fbmon.c:847:24: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
  847 |   DPRINTK("variable\n");
      |                        ^
drivers/acpi/scan.c: In function ‘acpi_bus_get_wakeup_device_flags’:
drivers/acpi/scan.c:903:43: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  903 |     "error in _DSW or _PSW evaluation\n"));
      |                                           ^
drivers/acpi/acpi_processor.c: In function ‘acpi_processor_errata_piix4’:
drivers/acpi/acpi_processor.c:133:67: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  133 |       "Bus master activity detection (BM-IDE) erratum enabled\n"));
      |                                                                   ^
drivers/acpi/acpi_processor.c:136:54: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  136 |       "Type-F DMA livelock erratum (C3 disabled)\n"));
      |                                                      ^
drivers/acpi/acpi_processor.c: In function ‘acpi_processor_get_info’:
drivers/acpi/acpi_processor.c:251:49: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
  251 |       "No bus mastering arbitration control\n"));
      |                                                 ^
drivers/acpi/processor_pdc.c: In function ‘acpi_processor_eval_pdc’:
drivers/acpi/processor_pdc.c:136:65: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  136 |       "Could not evaluate _PDC, using legacy perf. control.\n"));
      |                                                                 ^
drivers/tty/vt/keyboard.c: In function ‘k_fn’:
drivers/tty/vt/keyboard.c:740:22: warning: comparison is always true due to limited range of data type [-Wtype-limits]
  740 |  if ((unsigned)value < ARRAY_SIZE(func_table)) {
      |                      ^
fs/posix_acl.c: In function ‘get_acl’:
fs/posix_acl.c:127:22: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
  127 |   /* fall through */ ;
      |                      ^
drivers/scsi/sr.c:691:12: warning: initialized field overwritten [-Woverride-init]
  691 |  .ioctl  = sr_block_compat_ioctl,
      |            ^~~~~~~~~~~~~~~~~~~~~
drivers/scsi/sr.c:691:12: note: (near initialization for ‘sr_bdops.ioctl’)
In file included from drivers/ata/ahci.c:35:
drivers/ata/ahci.h:384:16: warning: initialized field overwritten [-Woverride-init]
  384 |  .can_queue  = AHCI_MAX_CMDS,   \
      |                ^~~~~~~~~~~~~
drivers/ata/ahci.c:103:2: note: in expansion of macro ‘AHCI_SHT’
  103 |  AHCI_SHT("ahci"),
      |  ^~~~~~~~
drivers/ata/ahci.h:384:16: note: (near initialization for ‘ahci_sht.can_queue’)
  384 |  .can_queue  = AHCI_MAX_CMDS,   \
      |                ^~~~~~~~~~~~~
drivers/ata/ahci.c:103:2: note: in expansion of macro ‘AHCI_SHT’
  103 |  AHCI_SHT("ahci"),
      |  ^~~~~~~~
drivers/ata/ahci.h:388:17: warning: initialized field overwritten [-Woverride-init]
  388 |  .sdev_attrs  = ahci_sdev_attrs
      |                 ^~~~~~~~~~~~~~~
drivers/ata/ahci.c:103:2: note: in expansion of macro ‘AHCI_SHT’
  103 |  AHCI_SHT("ahci"),
      |  ^~~~~~~~
drivers/ata/ahci.h:388:17: note: (near initialization for ‘ahci_sht.sdev_attrs’)
  388 |  .sdev_attrs  = ahci_sdev_attrs
      |                 ^~~~~~~~~~~~~~~
drivers/ata/ahci.c:103:2: note: in expansion of macro ‘AHCI_SHT’
  103 |  AHCI_SHT("ahci"),
      |  ^~~~~~~~
lib/errname.c:15:67: warning: initialized field overwritten [-Woverride-init]
   15 | #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
      |                                                                   ^~~
lib/errname.c:172:2: note: in expansion of macro ‘E’
  172 |  E(EDEADLK), /* EDEADLOCK */
      |  ^
lib/errname.c:15:67: note: (near initialization for ‘names_0[35]’)
   15 | #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
      |                                                                   ^~~
lib/errname.c:172:2: note: in expansion of macro ‘E’
  172 |  E(EDEADLK), /* EDEADLOCK */
      |  ^
lib/radix-tree.c: In function ‘set_iter_tags’:
lib/radix-tree.c:1134:15: warning: comparison is always false due to limited range of data type [-Wtype-limits]
 1134 |  if (tag_long < RADIX_TREE_TAG_LONGS - 1) {
      |               ^
drivers/input/mouse/synaptics.c: In function ‘synaptics_process_packet’:
drivers/input/mouse/synaptics.c:1105:6: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
 1105 |      ;   /* Nothing, treat a pen as a single finger */
      |      ^
drivers/usb/core/sysfs.c: In function ‘usb_create_sysfs_intf_files’:
drivers/usb/core/sysfs.c:1266:3: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
 1266 |   ; /* We don't actually care if the function fails. */
      |   ^
drivers/md/md.c: In function ‘bind_rdev_to_array’:
drivers/md/md.c:2438:27: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
 2438 |   /* failure here is OK */;
      |                           ^
drivers/md/md.c: In function ‘slot_store’:
drivers/md/md.c:3200:28: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
 3200 |    /* failure here is OK */;
      |                            ^
drivers/md/md.c: In function ‘remove_and_add_spares’:
drivers/md/md.c:9045:29: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
 9045 |     /* failure here is OK */;
      |                             ^
drivers/hid/hid-lgff.c: In function ‘hid_lgff_play’:
drivers/hid/hid-lgff.c:65:24: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
   65 | #define CLAMP(x) if (x < 0) x = 0; if (x > 0xff) x = 0xff
      |                        ^
drivers/hid/hid-lgff.c:86:3: note: in expansion of macro ‘CLAMP’
   86 |   CLAMP(left);
      |   ^~~~~
drivers/hid/hid-lgff.c:65:24: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
   65 | #define CLAMP(x) if (x < 0) x = 0; if (x > 0xff) x = 0xff
      |                        ^
drivers/hid/hid-lgff.c:87:3: note: in expansion of macro ‘CLAMP’
   87 |   CLAMP(right);
      |   ^~~~~

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ