From patchwork Tue Mar 28 14:11:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 744315 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vstCt2j3xz9s7K for ; Wed, 29 Mar 2017 01:13:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753543AbdC1ONA (ORCPT ); Tue, 28 Mar 2017 10:13:00 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:50753 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752292AbdC1OM7 (ORCPT ); Tue, 28 Mar 2017 10:12:59 -0400 Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue003 [212.227.15.129]) with ESMTPA (Nemesis) id 0Lbv6m-1cTfVr136i-00jFQJ; Tue, 28 Mar 2017 16:11:35 +0200 From: Arnd Bergmann To: Jiri Pirko Cc: Arnd Bergmann , "David S. Miller" , Ido Schimmel , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] rocker: fix Wmaybe-uninitialized false-positive Date: Tue, 28 Mar 2017 16:11:18 +0200 Message-Id: <20170328141126.1541994-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:BpXjVn+gBlfNwMN3Beh7N/NLh6tESIlUoes+91Py8TCbHz9yzMP +3lpUe0qqIN/4jR8GiXaS1fBjYbO3ip1kpP3R0OB95Z4TlV0sYGOIxy/E1Im42TtQFC5WWd i2vGvwXd+1uPX/lb54cbeA5AtFfLceBNFxEt/i8HGTbb6fCVZJOs1IbP2MQQ82MlMdmh1sU fCoef9RAa0fu1/80GbYCw== X-UI-Out-Filterresults: notjunk:1; V01:K0:YS45JEiqbok=:WGsF6iqKE7tecsiRVG90OI Ds5YWJtFotFdxb2oIwRds2SpKxFlb3LlGIshLGyDKWUH9SYn/4ZBOl6XvzKrgD7s7lIEd01IU Sfgyayfw6bWh9wlPvk3OZydHr/e+DZ7rTJZg7xWteEce3JXuR+PoYeEbO7csWnaMthOlP81DG Ukcl1d2kvZUVsNwxxDp7SnGttZpSXZiwK/KFohRODZ+RmpkkIhgzHkOEvtI2ql7Ke8FPljNRI N+5939BNPrkk6oeithr9iQhjPxqIzXxHDuD+8gJvS6yTr/X36RArKpIqQ2yEVpyDkgjc7Y1m+ vVq63Qd4SsgxorOOL5p19Mnht15yUkzS8X3dt5UzKN308/Of3j1dzff1+PTsyhau+3HhYwCI9 MxgnK7yDXx/2CHg2ujIUACcBhPCHcur1KlHyZE6quzKzV777rxW8WEGrNCupX6AROeXn9T84P auNLO9jKm37PUIG6vz8ylutAUKuS+OXx8gH/D1MGJYxM+Z4IPob/hv2ORMe2fXLH6AGGIWhA/ Oz4eEf5GBY+BaWSRzY4IFu29LFdbcpdTgnumCA/iN6DAIUKdTX4OzjJSb6C/M+jZWJwREApTW sBs98itCuSTec/g+WfEDJdQkBB99uodWdh+NlazZBOFG0nw3M4u9WOD+9N7occVh02v5cAiYd LBYYoo0NwWev/05eo1XgmawzVW+xL7VaaOjakWtD2HCg3eRzRdWTc4yo6wRiXu/1rX5E= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org gcc-7 reports a warning that earlier versions did not have: drivers/net/ethernet/rocker/rocker_ofdpa.c: In function 'ofdpa_port_stp_update': arch/x86/include/asm/string_32.h:79:22: error: '*((void *)&prev_ctrls+4)' may be used uninitialized in this function [-Werror=maybe-uninitialized] *((short *)to + 2) = *((short *)from + 2); ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/rocker/rocker_ofdpa.c:2218:7: note: '*((void *)&prev_ctrls+4)' was declared here This is clearly a variation of the warning about 'prev_state' that was shut up using uninitialized_var(). We can slightly simplify the code and get rid of the warning by unconditionally saving the prev_state and prev_ctrls variables. The inlined memcpy is not particularly expensive here, as it just has to read five bytes from one or two cache lines. Signed-off-by: Arnd Bergmann --- drivers/net/ethernet/rocker/rocker_ofdpa.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c index 7cd76b6b5cb9..2ae852454780 100644 --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c @@ -2216,18 +2216,15 @@ static int ofdpa_port_stp_update(struct ofdpa_port *ofdpa_port, { bool want[OFDPA_CTRL_MAX] = { 0, }; bool prev_ctrls[OFDPA_CTRL_MAX]; - u8 uninitialized_var(prev_state); + u8 prev_state; int err; int i; - if (switchdev_trans_ph_prepare(trans)) { - memcpy(prev_ctrls, ofdpa_port->ctrls, sizeof(prev_ctrls)); - prev_state = ofdpa_port->stp_state; - } - - if (ofdpa_port->stp_state == state) + prev_state = ofdpa_port->stp_state; + if (prev_state == state) return 0; + memcpy(prev_ctrls, ofdpa_port->ctrls, sizeof(prev_ctrls)); ofdpa_port->stp_state = state; switch (state) {