Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp539392ybt; Fri, 19 Jun 2020 07:47:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3Foy+x8bsfYQXOZun/5nxDHk5jNprD8criFstKwmyZVvevi7i8pST5SU+v0HXIK139x33 X-Received: by 2002:aa7:d717:: with SMTP id t23mr3530468edq.304.1592578055182; Fri, 19 Jun 2020 07:47:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592578055; cv=none; d=google.com; s=arc-20160816; b=Lm0rkzv0EIgomf4BKHXF6RBYpL8E8APpVtOmgLN1BP6vO3O/RVQL6vs1R5ND6MPQSW YKTuBrcf3XpxHKQpUNA4hCA+trx6ZP/Xz8BusaNGcG+EjSW9yV5Mv3pTYAjnBBOO7BsO n3HKfIPhu4MqsBk0e1WAtbxtuP2rXFGZPvcN7f0iom1n7+x4vvEE0rLNYTVRWBCr701Q LhXHcDhSvXvqh/XSqVVmV0USVvG7DfyoBkeU05kceOD2f2f8gYnGSpYvmDhDagvOz67i 5GzUvAkH/mbNQHYv2hiw7oHzPdChBAPNEkyAqvjHm9hrreImbmuOL86vhgxr2ZIvEva3 d3vQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hPCFxuuLVG1py7BEjz751Ft3HYkTbb86F6MtEgAutYM=; b=yXu9FJgpknSW8gdYJlLjzXv3620/tg2W9miADiRgWGPoDxqCCI9QE+Qr6gWe6ilEBy uqNbLr4WaoJ+9nmPEPHdv8OeegaSPY7Zom/8f5+FBOvjwsJh6DBI+mEVLDYAEGk0qxpj DxvXSAaqUKoyA+4TlLwx1W0FPuxdscUymLFeJ1bgfMSDPXAcfsvOtaLU+FZODaeksU63 eKOn4q+OFhZiNAXrAAZD8vZnuik8la6L2Qxwqz2B+7nxapSRsrIV29mjcNDWPY20LUy1 3W1hKGRNS3dLnUYrrkbUGRpp1rLobdqr5+4EW7iAIkWcAaCGY8Ask35WKMxG3RXYbHoE w9VQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LbKxH4j8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l6si3834049ejd.625.2020.06.19.07.47.12; Fri, 19 Jun 2020 07:47:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LbKxH4j8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388345AbgFSOmQ (ORCPT + 99 others); Fri, 19 Jun 2020 10:42:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:32852 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387999AbgFSOmN (ORCPT ); Fri, 19 Jun 2020 10:42:13 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1ED8820CC7; Fri, 19 Jun 2020 14:42:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592577733; bh=5Je26gO6C3CocQCMRXvtb19WLm+OtkVowkKyukTrP44=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LbKxH4j8+CKOrDFdPRyNCtsqIy940NcejMo/ha9hlJLicCk5amNYQSYOQ9hbk7JyV kOjMD2GXstEdniy/HnmviY7hbHtF+BQgDqj+ZrN/R1Lt+MsjZ8c+WMqiwcvPYj+2Ka lAkY5wZxBz/kLmNNqvaKYZcO05owkj5f6m+xcsrQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kees Cook , Aaron Brown , Jeff Kirsher , Sasha Levin Subject: [PATCH 4.9 068/128] e1000: Distribute switch variables for initialization Date: Fri, 19 Jun 2020 16:32:42 +0200 Message-Id: <20200619141623.808308755@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141620.148019466@linuxfoundation.org> References: <20200619141620.148019466@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kees Cook [ 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 Tested-by: Aaron Brown Signed-off-by: Jeff Kirsher Signed-off-by: Sasha Levin --- 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