From patchwork Thu Jul 21 19:28:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101989 Delivered-To: patch@linaro.org Received: by 10.140.29.52 with SMTP id a49csp617650qga; Thu, 21 Jul 2016 12:29:46 -0700 (PDT) X-Received: by 10.36.53.72 with SMTP id k69mr45337277ita.66.1469129386834; Thu, 21 Jul 2016 12:29:46 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j67si6962294iof.236.2016.07.21.12.29.46; Thu, 21 Jul 2016 12:29:46 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753848AbcGUT3o (ORCPT + 29 others); Thu, 21 Jul 2016 15:29:44 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:57504 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752818AbcGUT3n (ORCPT ); Thu, 21 Jul 2016 15:29:43 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue003) with ESMTPA (Nemesis) id 0La0Mr-1b33jd41qn-00ljW8; Thu, 21 Jul 2016 21:29:33 +0200 From: Arnd Bergmann To: "David S. Miller" Cc: Arnd Bergmann , Gavin Shan , Joel Stanley , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next] net/ncsi: avoid maybe-uninitialized warning Date: Thu, 21 Jul 2016 21:28:34 +0200 Message-Id: <20160721192927.3182806-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:8jUyaSwe98FgPI8YAxpId5QDRNPzgovEUtdRD/dGHECWmWNZrIO 2Z9SUIsMctiQJU7iozHt50el8+lhagetMME9gOxZrlJhLQ0AfHUiULsmI6YxSSzDwq1DgSF y098Zth+K7xnJ7GNBqFrxVetIXCMwOKSEtzFK/rPvorbwFtMzBTIsEXk9/9bPHHoemhEmK9 oXyEn4D2eZUEGdhG7c3Rw== X-UI-Out-Filterresults: notjunk:1; V01:K0:U/wrVK+DSlc=:XEN2q7lS9CA34tGv2vHlI8 AiIzCO7vZN9jGcJqn5opVjq98JDyzApyRC7oFS1zm0ITtMe2jJHxjNInECTZvslGtIFoz0lJ9 KhpEA1fDj+5ymtYgTKnh7XuEYtrphVQWkRvZO84/kqvDOwdjS3qqBHxLhKI8jJkF2ip9BYORR nk9FJNSp72z/Ck8xMaUT07De3oq1BDBlUO8ToCBlV7zrl/vM4+T7UMjn22e/Z64aF/Er6gt7W vXEpNJj8GGDJ1tfBVp735QHjjuYGS7NAbe6rX9O9otr3rjM8RhJaT0Y4ArRg13pmC4LaXSJom oCtNnQT9e7tDJre9y+njhfKVEP/T6N6r0U9Rzmd6dG7bI0tyZ3dU5T0HyrcxvJmOioUXbiK8z S3SAiOa/4d4VEX663lv0uhlxLoGu5Bv+Djj872iqrTZdH5JLZwwQ5zD2WgrAzhcPuiqxrD3hu rruIgzFGCKcpd51nrfKizNlu4I79kZWXavjVqOug8wW5u8vP0No5mHFoTS4NkdVKtZ73jZxzt oPYkb+0buSK9tV9dn/feNb7Hsgtfxe94/PhJVFnabU20ks3qL+Isx25hBraHDX07Iveeef9+E Bum3Z86yJqu2zUTP38wbgczlid6/Zj0nw66RPK+BwbfIRqHMg30yUjbVL5DBgg6eKxKfRUpC7 sTyq3GHRlPSi1hGjT1nfbw5JyAyr0ienTQA2Sl4K6OjYfDkvn5E2xWr/9TrtIl+GAzMg= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org gcc-4.9 and higher warn about the newly added NSCI code: net/ncsi/ncsi-manage.c: In function 'ncsi_process_next_channel': net/ncsi/ncsi-manage.c:1003:2: error: 'old_state' may be used uninitialized in this function [-Werror=maybe-uninitialized] The warning is a false positive and therefore harmless, but it would be good to avoid it anyway. I have determined that the barrier in the spin_unlock_irqsave() is what confuses gcc to the point that it cannot track whether the variable was unused or not. This rearranges the code in a way that makes it obvious to gcc that old_state is always initialized at the time of use, functionally this should not change anything. Signed-off-by: Arnd Bergmann --- net/ncsi/ncsi-manage.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) -- 2.9.0 diff --git a/net/ncsi/ncsi-manage.c b/net/ncsi/ncsi-manage.c index d627a39ddcd0..ef017b871857 100644 --- a/net/ncsi/ncsi-manage.c +++ b/net/ncsi/ncsi-manage.c @@ -982,23 +982,18 @@ int ncsi_process_next_channel(struct ncsi_dev_priv *ndp) spin_lock_irqsave(&ndp->lock, flags); nc = list_first_or_null_rcu(&ndp->channel_queue, struct ncsi_channel, link); - if (nc) { - old_state = xchg(&nc->state, NCSI_CHANNEL_INVISIBLE); - list_del_init(&nc->link); + if (!nc) { + spin_unlock_irqrestore(&ndp->lock, flags); + goto out; } + + old_state = xchg(&nc->state, NCSI_CHANNEL_INVISIBLE); + list_del_init(&nc->link); + spin_unlock_irqrestore(&ndp->lock, flags); ndp->active_channel = nc; - ndp->active_package = nc ? nc->package : NULL; - if (!nc) { - if (ndp->flags & NCSI_DEV_RESHUFFLE) { - ndp->flags &= ~NCSI_DEV_RESHUFFLE; - return ncsi_choose_active_channel(ndp); - } - - ncsi_report_link(ndp, false); - return -ENODEV; - } + ndp->active_package = nc->package; switch (old_state) { case NCSI_CHANNEL_INACTIVE: @@ -1017,6 +1012,17 @@ int ncsi_process_next_channel(struct ncsi_dev_priv *ndp) } return 0; + +out: + ndp->active_channel = NULL; + ndp->active_package = NULL; + if (ndp->flags & NCSI_DEV_RESHUFFLE) { + ndp->flags &= ~NCSI_DEV_RESHUFFLE; + return ncsi_choose_active_channel(ndp); + } + + ncsi_report_link(ndp, false); + return -ENODEV; } #if IS_ENABLED(CONFIG_IPV6)