From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Kees Cook <keescook@chromium.org>, Aaron Brown <aaron.f.brown@intel.com>, Jeff Kirsher <jeffrey.t.kirsher@intel.com>, Sasha Levin <sashal@kernel.org>, intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, clang-built-linux@googlegroups.com Subject: [PATCH AUTOSEL 4.9 18/50] e1000: Distribute switch variables for initialization Date: Mon, 8 Jun 2020 19:26:08 -0400 [thread overview] Message-ID: <20200608232640.3370262-18-sashal@kernel.org> (raw) In-Reply-To: <20200608232640.3370262-1-sashal@kernel.org> From: Kees Cook <keescook@chromium.org> [ Upstream commit a34c7f5156654ebaf7eaace102938be7ff7036cb ] 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. drivers/net/ethernet/intel/e1000/e1000_main.c: In function ‘e1000_xmit_frame’: drivers/net/ethernet/intel/e1000/e1000_main.c:3143:18: warning: statement will never be executed [-Wswitch-unreachable] 3143 | unsigned int pull_size; | ^~~~~~~~~ [1] https://bugs.llvm.org/show_bug.cgi?id=44916 Signed-off-by: Kees Cook <keescook@chromium.org> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/net/ethernet/intel/e1000/e1000_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c index 39a09e18c1b7..3b16ee0de246 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -3167,8 +3167,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); if (skb->data_len && hdr_len == len) { switch (hw->mac_type) { + case e1000_82544: { unsigned int pull_size; - case e1000_82544: + /* Make sure we have room to chop off 4 bytes, * and that the end alignment will work out to * this hardware's requirements @@ -3189,6 +3190,7 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, } len = skb_headlen(skb); break; + } default: /* do nothing */ break; -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [PATCH AUTOSEL 4.9 18/50] e1000: Distribute switch variables for initialization Date: Mon, 8 Jun 2020 19:26:08 -0400 [thread overview] Message-ID: <20200608232640.3370262-18-sashal@kernel.org> (raw) In-Reply-To: <20200608232640.3370262-1-sashal@kernel.org> From: Kees Cook <keescook@chromium.org> [ Upstream commit a34c7f5156654ebaf7eaace102938be7ff7036cb ] 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. drivers/net/ethernet/intel/e1000/e1000_main.c: In function ?e1000_xmit_frame?: drivers/net/ethernet/intel/e1000/e1000_main.c:3143:18: warning: statement will never be executed [-Wswitch-unreachable] 3143 | unsigned int pull_size; | ^~~~~~~~~ [1] https://bugs.llvm.org/show_bug.cgi?id=44916 Signed-off-by: Kees Cook <keescook@chromium.org> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/net/ethernet/intel/e1000/e1000_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c index 39a09e18c1b7..3b16ee0de246 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -3167,8 +3167,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); if (skb->data_len && hdr_len == len) { switch (hw->mac_type) { + case e1000_82544: { unsigned int pull_size; - case e1000_82544: + /* Make sure we have room to chop off 4 bytes, * and that the end alignment will work out to * this hardware's requirements @@ -3189,6 +3190,7 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, } len = skb_headlen(skb); break; + } default: /* do nothing */ break; -- 2.25.1
next prev parent reply other threads:[~2020-06-08 23:43 UTC|newest] Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-08 23:25 [PATCH AUTOSEL 4.9 01/50] ath9x: Fix stack-out-of-bounds Write in ath9k_hif_usb_rx_cb Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 02/50] ath9k: Fix use-after-free Write in ath9k_htc_rx_msg Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 03/50] media: si2157: Better check for running tuner in init Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 04/50] objtool: Ignore empty alternatives Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 05/50] net: ena: fix error returning in ena_com_get_hash_function() Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 06/50] spi: dw: Zero DMA Tx and Rx configurations on stack Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 07/50] Bluetooth: Add SCO fallback for invalid LMP parameters error Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 08/50] kgdb: Prevent infinite recursive entries to the debugger Sasha Levin 2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 09/50] spi: dw: Enable interrupts in accordance with DMA xfer mode Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 10/50] clocksource: dw_apb_timer_of: Fix missing clockevent timers Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 11/50] btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 12/50] ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 13/50] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 14/50] net: vmxnet3: fix possible buffer overflow caused by bad DMA value in vmxnet3_get_rss() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 15/50] staging: android: ion: use vmap instead of vm_map_ram Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 16/50] ath9k: Fix use-after-free Read in ath9k_wmi_ctrl_rx Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 17/50] ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb Sasha Levin 2020-06-08 23:26 ` Sasha Levin [this message] 2020-06-08 23:26 ` [Intel-wired-lan] [PATCH AUTOSEL 4.9 18/50] e1000: Distribute switch variables for initialization Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 19/50] dt-bindings: display: mediatek: control dpi pins mode to avoid leakage Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 20/50] media: dvb: return -EREMOTEIO on i2c transfer failure Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 21/50] media: platform: fcp: Set appropriate DMA parameters Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 22/50] MIPS: Make sparse_init() using top-down allocation Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 23/50] netfilter: nft_nat: return EOPNOTSUPP if type or flags are not supported Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 24/50] lib/mpi: Fix 64-bit MIPS build with Clang Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 25/50] perf: Add cond_resched() to task_function_call() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 26/50] exit: Move preemption fixup up, move blocking operations down Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 27/50] net: lpc-enet: fix error return code in lpc_mii_init() Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 28/50] net: allwinner: Fix use correct return type for ndo_start_xmit() Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 29/50] powerpc/spufs: fix copy_to_user while atomic Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 30/50] ath9k_htc: Silence undersized packet warnings Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 31/50] MIPS: Truncate link address into 32bit for 32bit kernel Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 32/50] mips: cm: Fix an invalid error code of INTVN_*_ERR Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 33/50] kgdb: Fix spurious true from in_dbg_master() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 34/50] md: don't flush workqueue unconditionally in md_open Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 35/50] rtlwifi: Fix a double free in _rtl_usb_tx_urb_setup() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 36/50] mwifiex: Fix memory corruption in dump_station Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 37/50] x86/boot: Correct relocation destination on old linkers Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 38/50] mips: Add udelay lpj numbers adjustment Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 39/50] x86/mm: Stop printing BRK addresses Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 40/50] m68k: mac: Don't call via_flush_cache() on Mac IIfx Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 41/50] macvlan: Skip loopback packets in RX handler Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 42/50] PCI: Don't disable decoding when mmio_always_on is set Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 43/50] MIPS: Fix IRQ tracing when call handle_fpe() and handle_msa_fpe() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 44/50] xfs: gut error handling in xfs_trans_unreserve_and_mod_sb() Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 45/50] staging: greybus: sdio: Respect the cmd->busy_timeout from the mmc core Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 46/50] ixgbe: fix signed-integer-overflow warning Sasha Levin 2020-06-08 23:26 ` [Intel-wired-lan] " Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 47/50] mmc: sdhci-esdhc-imx: fix the mask for tuning start point Sasha Levin 2020-06-08 23:26 ` Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 48/50] spi: dw: Return any value retrieved from the dma_transfer callback Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 49/50] cpuidle: Fix three reference count leaks Sasha Levin 2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 50/50] vxlan: Avoid infinite loop when suppressing NS messages with invalid options 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=20200608232640.3370262-18-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=aaron.f.brown@intel.com \ --cc=clang-built-linux@googlegroups.com \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jeffrey.t.kirsher@intel.com \ --cc=keescook@chromium.org \ --cc=linux-kernel@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=stable@vger.kernel.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: linkBe 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.