RE: [PATCH net] hvsock: fix epollout hang from race condition
From: Sunil Muthuswamy <hidden>
Date: 2019-06-15 07:23:34
Also in:
linux-hyperv, lkml
quoted hunk ↗ jump to hunk
-----Original Message----- From: Dexuan Cui <decui@microsoft.com> Sent: Friday, June 14, 2019 10:04 PM To: David Miller <davem@davemloft.net>; Sunil Muthuswamy <redacted> Cc: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang <haiyangz@microsoft.com>; Stephen Hemminger [off-list ref]; sashal@kernel.org; Michael Kelley [off-list ref]; netdev@vger.kernel.org; linux- hyperv@vger.kernel.org; linux-kernel@vger.kernel.org Subject: RE: [PATCH net] hvsock: fix epollout hang from race conditionquoted
From: linux-hyperv-owner@vger.kernel.org [off-list ref] On Behalf Of Dexuan Cui Sent: Friday, June 14, 2019 8:23 PM To: David Miller <davem@davemloft.net>; Sunil Muthuswamy [off-list ref] Cc: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang [off-list ref]; Stephen Hemminger [off-list ref]; sashal@kernel.org; Michael Kelley [off-list ref]; netdev@vger.kernel.org; linux-hyperv@vger.kernel.org; linux-kernel@vger.kernel.org Subject: RE: [PATCH net] hvsock: fix epollout hang from race conditionquoted
From: linux-hyperv-owner@vger.kernel.org [off-list ref] On Behalf Of David Miller Sent: Friday, June 14, 2019 7:15 PM To: Sunil Muthuswamy <redacted> This adds lots of new warnings: net/vmw_vsock/hyperv_transport.c: In function ‘hvs_probe’: net/vmw_vsock/hyperv_transport.c:205:20: warning: ‘vnew’ may be used uninitialized in this function [-Wmaybe-uninitialized] remote->svm_port = host_ephemeral_port++; ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ net/vmw_vsock/hyperv_transport.c:332:21: note: ‘vnew’ was declaredherequoted
struct vsock_sock *vnew; ^~~~ net/vmw_vsock/hyperv_transport.c:406:22: warning: ‘hvs_new’ may be used uninitialized in this function [-Wmaybe-uninitialized] hvs_new->vm_srv_id = *if_type; ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ net/vmw_vsock/hyperv_transport.c:333:23: note: ‘hvs_new’ was declared here struct hvsock *hvs, *hvs_new; ^~~~~~~Hi David, These warnings are not introduced by this patch from Sunil.Well, technically speaking, the warnings are caused by Suni's patch, but I think it should be a bug of gcc (I'm using "gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0"). As you can see, the line numbers given by gcc, i.e. line 205, line 406, are not related to the warnings. Actually, the same warnings can repro with the below one-line patch on this commit of today's net.git: 9a33629ba6b2 ("hv_netvsc: Set probe mode to sync")--- a/net/vmw_vsock/hyperv_transport.c +++ b/net/vmw_vsock/hyperv_transport.c@@ -403,6 +403,7 @@ static void hvs_open_connection(struct vmbus_channel *chan) set_per_channel_state(chan, conn_from_host ? new : sk); vmbus_set_chn_rescind_callback(chan, hvs_close_connection); + asm ("nop"); if (conn_from_host) { new->sk_state = TCP_ESTABLISHED;It looks a simple inline assembly code can confuse gcc. I'm not sure if I should report a bug for gcc... I posted a patch to suppress these bogus warnings just now. The Subject is: [PATCH net] hv_sock: Suppress bogus "may be used uninitialized" warnings Thanks, -- Dexuan
Yes, these warnings are not specific to this patch. And, additionally these should already addressed in the commit https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=ac383f58f3c98de37fa67452acc5bd677396e9f3 I was trying to avoid making the same changes here to avoid merge conflicts when 'net-next' merges with 'net' next.