From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753847AbcGUT3o (ORCPT ); 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 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 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(-) 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) -- 2.9.0