mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Sasha Levin <sashal@kernel.org>,
	linux-kbuild@vger.kernel.org
Subject: [PATCH AUTOSEL 5.6 54/62] Stop the ad-hoc games with -Wno-maybe-initialized
Date: Thu, 14 May 2020 14:51:39 -0400	[thread overview]
Message-ID: <20200514185147.19716-54-sashal@kernel.org> (raw)
In-Reply-To: <20200514185147.19716-1-sashal@kernel.org>

From: Linus Torvalds <torvalds@linux-foundation.org>

[ Upstream commit 78a5255ffb6a1af189a83e493d916ba1c54d8c75 ]

We have some rather random rules about when we accept the
"maybe-initialized" warnings, and when we don't.

For example, we consider it unreliable for gcc versions < 4.9, but also
if -O3 is enabled, or if optimizing for size.  And then various kernel
config options disabled it, because they know that they trigger that
warning by confusing gcc sufficiently (ie PROFILE_ALL_BRANCHES).

And now gcc-10 seems to be introducing a lot of those warnings too, so
it falls under the same heading as 4.9 did.

At the same time, we have a very straightforward way to _enable_ that
warning when wanted: use "W=2" to enable more warnings.

So stop playing these ad-hoc games, and just disable that warning by
default, with the known and straight-forward "if you want to work on the
extra compiler warnings, use W=123".

Would it be great to have code that is always so obvious that it never
confuses the compiler whether a variable is used initialized or not?
Yes, it would.  In a perfect world, the compilers would be smarter, and
our source code would be simpler.

That's currently not the world we live in, though.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 Makefile             |  7 +++----
 init/Kconfig         | 18 ------------------
 kernel/trace/Kconfig |  1 -
 3 files changed, 3 insertions(+), 23 deletions(-)

diff --git a/Makefile b/Makefile
index 744245f0c96cf..d226ec8bd167f 100644
--- a/Makefile
+++ b/Makefile
@@ -708,10 +708,6 @@ else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 KBUILD_CFLAGS += -Os
 endif
 
-ifdef CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED
-KBUILD_CFLAGS   += -Wno-maybe-uninitialized
-endif
-
 # Tell gcc to never replace conditional load with a non-conditional one
 KBUILD_CFLAGS	+= $(call cc-option,--param=allow-store-data-races=0)
 KBUILD_CFLAGS	+= $(call cc-option,-fno-allow-store-data-races)
@@ -862,6 +858,9 @@ KBUILD_CFLAGS += -Wno-pointer-sign
 # disable stringop warnings in gcc 8+
 KBUILD_CFLAGS += $(call cc-disable-warning, stringop-truncation)
 
+# Enabled with W=2, disabled by default as noisy
+KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized)
+
 # disable invalid "can't wrap" optimizations for signed / pointers
 KBUILD_CFLAGS	+= $(call cc-option,-fno-strict-overflow)
 
diff --git a/init/Kconfig b/init/Kconfig
index 4f717bfdbfe2d..ef59c5c36cdb5 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -36,22 +36,6 @@ config TOOLS_SUPPORT_RELR
 config CC_HAS_ASM_INLINE
 	def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
 
-config CC_HAS_WARN_MAYBE_UNINITIALIZED
-	def_bool $(cc-option,-Wmaybe-uninitialized)
-	help
-	  GCC >= 4.7 supports this option.
-
-config CC_DISABLE_WARN_MAYBE_UNINITIALIZED
-	bool
-	depends on CC_HAS_WARN_MAYBE_UNINITIALIZED
-	default CC_IS_GCC && GCC_VERSION < 40900  # unreliable for GCC < 4.9
-	help
-	  GCC's -Wmaybe-uninitialized is not reliable by definition.
-	  Lots of false positive warnings are produced in some cases.
-
-	  If this option is enabled, -Wno-maybe-uninitialzed is passed
-	  to the compiler to suppress maybe-uninitialized warnings.
-
 config CONSTRUCTORS
 	bool
 	depends on !UML
@@ -1249,14 +1233,12 @@ config CC_OPTIMIZE_FOR_PERFORMANCE
 config CC_OPTIMIZE_FOR_PERFORMANCE_O3
 	bool "Optimize more for performance (-O3)"
 	depends on ARC
-	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
 	help
 	  Choosing this option will pass "-O3" to your compiler to optimize
 	  the kernel yet more for performance.
 
 config CC_OPTIMIZE_FOR_SIZE
 	bool "Optimize for size (-Os)"
-	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
 	help
 	  Choosing this option will pass "-Os" to your compiler resulting
 	  in a smaller kernel.
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 402eef84c859a..743647005f64e 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -466,7 +466,6 @@ config PROFILE_ANNOTATED_BRANCHES
 config PROFILE_ALL_BRANCHES
 	bool "Profile all if conditionals" if !FORTIFY_SOURCE
 	select TRACE_BRANCH_PROFILING
-	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
 	help
 	  This tracer profiles all branch conditions. Every if ()
 	  taken in the kernel is recorded whether it hit or miss.
-- 
2.20.1


  parent reply	other threads:[~2020-05-14 19:08 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14 18:50 [PATCH AUTOSEL 5.6 01/62] kbuild: avoid concurrency issue in parallel building dtbs and dtbs_check Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 02/62] net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 03/62] Makefile: disallow data races on gcc-10 as well Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 04/62] gcc-common.h: Update for GCC 10 Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 05/62] HID: multitouch: add eGalaxTouch P80H84 support Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 06/62] HID: logitech: Add support for Logitech G11 extra keys Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 07/62] HID: alps: Add AUI1657 device ID Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 08/62] HID: alps: ALPS_1657 is too specific; use U1_UNICORN_LEGACY instead Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 09/62] phy: tegra: Select USB_COMMON for usb_get_maximum_speed() Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 10/62] scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 11/62] scsi: qla2xxx: Delete all sessions before unregister local nvme port Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 12/62] configfs: fix config_item refcnt leak in configfs_rmdir() Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 13/62] vhost/vsock: fix packet delivery order to monitoring devices Sasha Levin
2020-05-14 18:50 ` [PATCH AUTOSEL 5.6 14/62] aquantia: Fix the media type of AQC100 ethernet controller in the driver Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 15/62] net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()' Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 16/62] most: core: use function subsys_initcall() Sasha Levin
2020-05-15  6:59   ` Greg Kroah-Hartman
2020-05-21  0:24     ` Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 17/62] component: Silence bind error on -EPROBE_DEFER Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 18/62] net/ena: Fix build warning in ena_xdp_set() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 19/62] scsi: ibmvscsi: Fix WARN_ON during event pool release Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 20/62] HID: i2c-hid: reset Synaptics SYNA2393 on resume Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 21/62] ibmvnic: Skip fatal error reset after passive init Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 22/62] soc: qcom: ipa: IPA endpoints Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 23/62] net: ipa: fix a bug in ipa_endpoint_stop() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 24/62] net: moxa: Fix a potential double 'free_irq()' Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 25/62] ftrace/selftests: workaround cgroup RT scheduling issues Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 26/62] ftrace/selftest: make unresolved cases cause failure if --fail-unresolved set Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 27/62] selftests: fix kvm relocatable native/cross builds and installs Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 28/62] x86/apic: Move TSC deadline timer debug printk Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 29/62] hv_netvsc: Fix netvsc_start_xmit's return type Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 30/62] net: Make PTP-specific drivers depend on PTP_1588_CLOCK Sasha Levin
2020-05-14 21:40   ` Arnd Bergmann
2020-05-15 12:07     ` Grygorii Strashko
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 31/62] gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 32/62] virtio-blk: handle block_device_operations callbacks after hot unplug Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 33/62] HID: quirks: Add HID_QUIRK_NO_INIT_REPORTS quirk for Dell K12A keyboard-dock Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 34/62] sun6i: dsi: fix gcc-4.8 Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 35/62] ceph: fix double unlock in handle_cap_export() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 36/62] stmmac: fix pointer check after utilization in stmmac_interrupt Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 37/62] net: stmmac: gmac5+: fix potential integer overflow on 32 bit multiply Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 38/62] USB: core: Fix misleading driver bug report Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 39/62] platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 40/62] iommu/amd: Fix race in increase_address_space()/fetch_pte() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 41/62] iommu/amd: Do not loop forever when trying to increase address space Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 42/62] iommu/amd: Call domain_flush_complete() in update_domain() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 43/62] iommu/amd: Update Device Table in increase_address_space() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 44/62] drm/amd/display: Update DCN2.1 DV Code Revision Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 45/62] drm/amd/display: fix counter in wait_for_no_pipes_pending Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 46/62] drm/amd/display: Prevent dpcd reads with passive dongles Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 47/62] KVM: selftests: Fix build for evmcs.h Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 48/62] ARM: futex: Address build warning Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 49/62] net: dsa: ocelot: the MAC table on Felix is twice as large Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 50/62] net: mscc: ocelot: ANA_AUTOAGE_AGE_PERIOD holds a value in seconds, not ms Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 51/62] wireguard: selftests: initalize ipv6 members to NULL to squelch clang warning Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 52/62] tools/bootconfig: Fix resource leak in apply_xbc() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 53/62] scripts/gdb: repair rb_first() and rb_last() Sasha Levin
2020-05-14 18:51 ` Sasha Levin [this message]
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 55/62] gcc-10: disable 'zero-length-bounds' warning for now Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 56/62] gcc-10: disable 'array-bounds' " Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 57/62] gcc-10: disable 'stringop-overflow' " Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 58/62] gcc-10: disable 'restrict' " Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 59/62] gcc-10: mark more functions __init to avoid section mismatch warnings Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 60/62] crypto: lrw - simplify error handling in create() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 61/62] crypto: xts - simplify error handling in ->create() Sasha Levin
2020-05-14 18:51 ` [PATCH AUTOSEL 5.6 62/62] gcc-10: avoid shadowing standard library 'free()' in crypto Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200514185147.19716-54-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome