Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp321222ybv; Wed, 19 Feb 2020 22:25:13 -0800 (PST) X-Google-Smtp-Source: APXvYqwZ3k40huOKjg3O5odnOS1lWrnTA2nBDDhjKxg/pn9YGDDf+G+NjpEhwg7nZ9SHKtl/7Q4T X-Received: by 2002:a9d:6c55:: with SMTP id g21mr22602092otq.264.1582179913474; Wed, 19 Feb 2020 22:25:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582179913; cv=none; d=google.com; s=arc-20160816; b=qZuP/gUbsNZuxXYK3Mp2ov9lpKD7dIbLIC+mpDBIaR6nmMGDi6wWmC0a3OHr/2XVnz ICleRZDfcrRrP79SxHWIFuPBuxoPXOpZoBUdFRDPC6NfBQ2CyzdH8bQerZ9qAvR7Hwgx L97HWtR6A8o1WXG/4TXmR/poQRdkAg26MJGplrXEIy4jqqTVjJr/Au4AF8SBSAijIxO7 7YljMvLa0FyovCAx+L4KyIajYCnC1f71n/oPYp+3+F8omTHiFjTLfGZ8Fymzy7O50sKh vkZgjvvIxrzgdHKcu4N2nQMjJ/7LTKdnpu0NWKrew+C0lqTL/E/OD9mZhar6T+0eho4f ZQyw== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=r7W1IeYO5luNyCIfOI+KTpss0yVfj4B4P/bY+7anUj4=; b=i8640qmYKV5TyKNpFkUb9XDxAjp6QjFs/fvH9qJbtCXcg/GwaUM53h12UZMw7rPhmT luvBOt/Xz1Rex6baaAIQab1Wt7PLCbSSB/dhxqG6WQktLno/iXDKddL7VUczlsQcWo+m JKIThqUHzDmE3fgqI1u8dI4mtSNuOJ0aT2KVblFTl9pHLgziKh6fxYDKvZ/0kOz8gmpe R6+cAEYDUUeuCBVO/p9k5ONJpOaclKHySbaS2HC1jraFW6LosYPoUDKsrIdZCkinjK0S 0YHxqsgButF1c0dUQpG1/vHm6gdEG2fq3kDtdpA4b+bjfsOJ/UMwz4lMl02UwayhFSsy wxbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=GtMY8VRr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f62si2575457oib.131.2020.02.19.22.25.01; Wed, 19 Feb 2020 22:25:13 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=GtMY8VRr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727697AbgBTGX0 (ORCPT + 99 others); Thu, 20 Feb 2020 01:23:26 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:45678 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727405AbgBTGXU (ORCPT ); Thu, 20 Feb 2020 01:23:20 -0500 Received: by mail-pg1-f194.google.com with SMTP id b9so1379489pgk.12 for ; Wed, 19 Feb 2020 22:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=r7W1IeYO5luNyCIfOI+KTpss0yVfj4B4P/bY+7anUj4=; b=GtMY8VRryc4tgEAZGFnHgZwifnQLW90Ls2V3FbDv7DGB/HQqIksqO+WTqzfYGx9yL/ v0WMmt16AUT4OP+0CDmzqdVSg4knv8RD+RRV7JrC9tnF63W+hQyCQSJJLTvGjBPKR6AS dgWP+eUZvmip3PM89KktbrcAIjM7V+++IHS2I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=r7W1IeYO5luNyCIfOI+KTpss0yVfj4B4P/bY+7anUj4=; b=D2g3PT9oiglM3r0dNjq0i8XWjEJCLWdu39CA6uNhmWvBLa0q0V8C3jzoA1qIm3a+wG KEiYXuBBGifzbySCJ0uSh8bH7FLvMxL+vK/sDKV1JkPlhdndnwwLtuge2K14JNa2gEK9 bFOng3hsqCbH46a9LKIv9Jl0QPUumFF0dXaHEYlqW2YtB843AAVoC2PBgMC+FABOLuVV m4cR+vsJKw2+h5rXxuTBbOTjnpx+b9aUuZX4xK+wUVl+soru6Lj9Dr14cx2MHE5nGWM+ 0J4ufuEIPJRXUUBo7TnFlWZT87YEKhP5t81nw44TPOrsT/xrbMFmFLJcjFQxXocg+w72 DdZw== X-Gm-Message-State: APjAAAXMRk4xGr8l0h65qu8Js1KcagdGmla2p+qs1yscuSKCnm/roYkK a61uFluTArme4najDRjZLYnAwA== X-Received: by 2002:a62:7696:: with SMTP id r144mr30710610pfc.177.1582179799553; Wed, 19 Feb 2020 22:23:19 -0800 (PST) Received: from www.outflux.net (smtp.outflux.net. [198.145.64.163]) by smtp.gmail.com with ESMTPSA id x6sm1701090pfi.83.2020.02.19.22.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2020 22:23:18 -0800 (PST) From: Kees Cook To: Greg Kroah-Hartman , Felipe Balbi Cc: Alexander Potapenko , Kees Cook , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] usb: gadget: net2280: Distribute switch variables for initialization Date: Wed, 19 Feb 2020 22:23:15 -0800 Message-Id: <20200220062315.69253-1-keescook@chromium.org> X-Mailer: git-send-email 2.20.1 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 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/usb/gadget/udc/net2280.c: In function ‘handle_stat0_irqs_superspeed’: drivers/usb/gadget/udc/net2280.c:2871:22: warning: statement will never be executed [-Wswitch-unreachable] 2871 | struct net2280_ep *e; | ^ [1] https://bugs.llvm.org/show_bug.cgi?id=44916 Signed-off-by: Kees Cook --- drivers/usb/gadget/udc/net2280.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/udc/net2280.c b/drivers/usb/gadget/udc/net2280.c index 1fd1b9186e46..cc5869363298 100644 --- a/drivers/usb/gadget/udc/net2280.c +++ b/drivers/usb/gadget/udc/net2280.c @@ -2861,6 +2861,7 @@ static void ep_clear_seqnum(struct net2280_ep *ep) static void handle_stat0_irqs_superspeed(struct net2280 *dev, struct net2280_ep *ep, struct usb_ctrlrequest r) { + struct net2280_ep *e; int tmp = 0; #define w_value le16_to_cpu(r.wValue) @@ -2868,14 +2869,13 @@ static void handle_stat0_irqs_superspeed(struct net2280 *dev, #define w_length le16_to_cpu(r.wLength) switch (r.bRequest) { - struct net2280_ep *e; - u16 status; - case USB_REQ_SET_CONFIGURATION: dev->addressed_state = !w_value; goto usb3_delegate; - case USB_REQ_GET_STATUS: + case USB_REQ_GET_STATUS: { + u16 status; + switch (r.bRequestType) { case (USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE): status = dev->wakeup_enable ? 0x02 : 0x00; @@ -2905,7 +2905,7 @@ static void handle_stat0_irqs_superspeed(struct net2280 *dev, goto usb3_delegate; } break; - + } case USB_REQ_CLEAR_FEATURE: switch (r.bRequestType) { case (USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE):