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.4 41/49] Stop the ad-hoc games with -Wno-maybe-initialized
Date: Thu, 14 May 2020 14:53:02 -0400 [thread overview]
Message-ID: <20200514185311.20294-41-sashal@kernel.org> (raw)
In-Reply-To: <20200514185311.20294-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 388b7b49a52d0..68708ae07fbd3 100644
--- a/Makefile
+++ b/Makefile
@@ -707,10 +707,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)
@@ -861,6 +857,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 0bffc8fdbf3da..6db3e310a5e42 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
@@ -1226,14 +1210,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 e08527f50d2a9..f3f2fc8ad81aa 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -371,7 +371,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
next prev parent reply other threads:[~2020-05-14 18:54 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-14 18:52 [PATCH AUTOSEL 5.4 01/49] kbuild: avoid concurrency issue in parallel building dtbs and dtbs_check Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 02/49] net: drop_monitor: use IS_REACHABLE() to guard net_dm_hw_report() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 03/49] Makefile: disallow data races on gcc-10 as well Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 04/49] gcc-common.h: Update for GCC 10 Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 05/49] HID: multitouch: add eGalaxTouch P80H84 support Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 06/49] HID: alps: Add AUI1657 device ID Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 07/49] HID: alps: ALPS_1657 is too specific; use U1_UNICORN_LEGACY instead Sasha Levin
[not found] ` <20200514185311.20294-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 08/49] phy: tegra: Select USB_COMMON for usb_get_maximum_speed() Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 09/49] scsi: qla2xxx: Fix hang when issuing nvme disconnect-all in NPIV Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 10/49] scsi: qla2xxx: Delete all sessions before unregister local nvme port Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 11/49] configfs: fix config_item refcnt leak in configfs_rmdir() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 12/49] vhost/vsock: fix packet delivery order to monitoring devices Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 13/49] aquantia: Fix the media type of AQC100 ethernet controller in the driver Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 14/49] net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()' Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 15/49] most: core: use function subsys_initcall() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 16/49] component: Silence bind error on -EPROBE_DEFER Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 17/49] net/ena: Fix build warning in ena_xdp_set() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 18/49] scsi: ibmvscsi: Fix WARN_ON during event pool release Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 19/49] HID: i2c-hid: reset Synaptics SYNA2393 on resume Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 20/49] x86/mm/cpa: Flush direct map alias during cpa Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 21/49] ibmvnic: Skip fatal error reset after passive init Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 22/49] soc: qcom: ipa: IPA endpoints Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 23/49] net: ipa: fix a bug in ipa_endpoint_stop() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 24/49] net: moxa: Fix a potential double 'free_irq()' Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 25/49] ftrace/selftests: workaround cgroup RT scheduling issues Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 26/49] ftrace/selftest: make unresolved cases cause failure if --fail-unresolved set Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 27/49] x86/apic: Move TSC deadline timer debug printk Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 28/49] gtp: set NLM_F_MULTI flag in gtp_genl_dump_pdp() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 29/49] virtio-blk: handle block_device_operations callbacks after hot unplug Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 30/49] HID: quirks: Add HID_QUIRK_NO_INIT_REPORTS quirk for Dell K12A keyboard-dock Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 31/49] sun6i: dsi: fix gcc-4.8 Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 32/49] ceph: fix double unlock in handle_cap_export() Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 33/49] stmmac: fix pointer check after utilization in stmmac_interrupt Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 34/49] USB: core: Fix misleading driver bug report Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 35/49] platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 36/49] iommu/amd: Call domain_flush_complete() in update_domain() Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 37/49] drm/amd/display: Prevent dpcd reads with passive dongles Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` Sasha Levin
2020-05-14 18:52 ` [PATCH AUTOSEL 5.4 38/49] KVM: selftests: Fix build for evmcs.h Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 39/49] ARM: futex: Address build warning Sasha Levin
2020-05-14 18:53 ` Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 40/49] scripts/gdb: repair rb_first() and rb_last() Sasha Levin
2020-05-14 18:53 ` Sasha Levin [this message]
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 42/49] gcc-10: disable 'zero-length-bounds' warning for now Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 43/49] gcc-10: disable 'array-bounds' " Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 44/49] gcc-10: disable 'stringop-overflow' " Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 45/49] gcc-10: disable 'restrict' " Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 46/49] gcc-10: mark more functions __init to avoid section mismatch warnings Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 47/49] crypto: lrw - simplify error handling in create() Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 48/49] crypto: xts - simplify error handling in ->create() Sasha Levin
2020-05-14 18:53 ` [PATCH AUTOSEL 5.4 49/49] 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=20200514185311.20294-41-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.