From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Kees Cook <keescook@chromium.org>,
Juergen Gross <jgross@suse.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Sasha Levin <sashal@kernel.org>,
xen-devel@lists.xenproject.org,
clang-built-linux@googlegroups.com
Subject: [PATCH AUTOSEL 4.14 21/22] x86/xen: Distribute switch variables for initialization
Date: Mon, 2 Mar 2020 21:49:32 -0500 [thread overview]
Message-ID: <20200303024933.10371-21-sashal@kernel.org> (raw)
In-Reply-To: <20200303024933.10371-1-sashal@kernel.org>
From: Kees Cook <keescook@chromium.org>
[ Upstream commit 9038ec99ceb94fb8d93ade5e236b2928f0792c7c ]
Variables declared in a switch statement before any case statements
cannot be automatically initialized with compiler instrumentation (as
they are not part of any execution flow). With GCC's proposed automatic
stack variable initialization feature, this triggers a warning (and they
don't get initialized). Clang's automatic stack variable initialization
(via CONFIG_INIT_STACK_ALL=y) doesn't throw a warning, but it also
doesn't initialize such variables[1]. Note that these warnings (or silent
skipping) happen before the dead-store elimination optimization phase,
so even when the automatic initializations are later elided in favor of
direct initializations, the warnings remain.
To avoid these problems, move such variables into the "case" where
they're used or lift them up into the main function body.
arch/x86/xen/enlighten_pv.c: In function ‘xen_write_msr_safe’:
arch/x86/xen/enlighten_pv.c:904:12: warning: statement will never be executed [-Wswitch-unreachable]
904 | unsigned which;
| ^~~~~
[1] https://bugs.llvm.org/show_bug.cgi?id=44916
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20200220062318.69299-1-keescook@chromium.org
Reviewed-by: Juergen Gross <jgross@suse.com>
[boris: made @which an 'unsigned int']
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/xen/enlighten_pv.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index f79a0cdc6b4e7..1f8175bf2a5e3 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -909,14 +909,15 @@ static u64 xen_read_msr_safe(unsigned int msr, int *err)
static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high)
{
int ret;
+#ifdef CONFIG_X86_64
+ unsigned int which;
+ u64 base;
+#endif
ret = 0;
switch (msr) {
#ifdef CONFIG_X86_64
- unsigned which;
- u64 base;
-
case MSR_FS_BASE: which = SEGBASE_FS; goto set;
case MSR_KERNEL_GS_BASE: which = SEGBASE_GS_USER; goto set;
case MSR_GS_BASE: which = SEGBASE_GS_KERNEL; goto set;
--
2.20.1
next prev parent reply other threads:[~2020-03-03 2:52 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-03 2:49 [PATCH AUTOSEL 4.14 01/22] usb: charger: assign specific number for enum value Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 02/22] serial: ar933x_uart: set UART_CS_{RX,TX}_READY_ORIDE Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 03/22] selftests: fix too long argument Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 04/22] usb: gadget: composite: Support more than 500mA MaxPower Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 05/22] usb: gadget: ffs: ffs_aio_cancel(): Save/restore IRQ flags Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 06/22] usb: gadget: serial: fix Tx stall after buffer overflow Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 07/22] drm/msm/mdp5: rate limit pp done timeout warnings Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 08/22] drm: msm: Fix return type of dsi_mgr_connector_mode_valid for kCFI Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 09/22] drm/msm/dsi: save pll state before dsi host is powered off Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 10/22] net: atlantic: fix potential error handling Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 11/22] net: phy: restore mdio regs in the iproc mdio driver Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 12/22] net: ks8851-ml: Remove 8-bit bus accessors Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 13/22] net: ks8851-ml: Fix 16-bit data access Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 14/22] net: ks8851-ml: Fix 16-bit IO operation Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 15/22] watchdog: da9062: do not ping the hw during stop() Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 16/22] s390/cio: cio_ignore_proc_seq_next should increase position index Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 17/22] nvme-pci: Use single IRQ vector for old Apple models Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 18/22] x86/boot/compressed: Don't declare __force_order in kaslr_64.c Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 19/22] nvme: Fix uninitialized-variable warning Sasha Levin
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 20/22] nfc: pn544: Fix occasional HW initialization failure Sasha Levin
2020-03-03 2:49 ` Sasha Levin [this message]
2020-03-03 2:49 ` [PATCH AUTOSEL 4.14 22/22] net: thunderx: workaround BGX TX Underflow issue 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=20200303024933.10371-21-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=boris.ostrovsky@oracle.com \
--cc=clang-built-linux@googlegroups.com \
--cc=jgross@suse.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=xen-devel@lists.xenproject.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