Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp271143pxj; Thu, 13 May 2021 04:42:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtW/ZyF4c7RV1AK07WaG5iZzzQDPz/fwg3lOk+FKjGa7OCp0q78KDc8DSkV7Ze+t9+oG66 X-Received: by 2002:a02:9389:: with SMTP id z9mr37185718jah.60.1620906144091; Thu, 13 May 2021 04:42:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620906144; cv=none; d=google.com; s=arc-20160816; b=cduL7ugXuT8mOYleFIlIvdCWuD018iXbPQfDiBNbQN3moGoiPzkbs4jY4/vdOTzEzO vxGmYcSaHheqrRZi0rurr9X71IauNML5VlJnkCJOYOWhyBCfqEVwHwnRZ0uGrJxRimTa 9XA2Yrmzxke+EmvgVjXGBCKq+HeGAOCwwJOI0MUuCra6fkodQ2mpK/X0y6rJxwXw5/n5 LNr6bwSQQxpprJs83JYkjko7l0AD+Lw25ibZhmV9fIh7hnrN2EYrX/U6OA6Nk0pIWcgA pQnCflzFgwh0VL0uEb+3eohqVbFbK50E1yPKgirCif3+643pAeEZlnPKqP4FP/YXNxSd F28w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=YasoHOohvVrbRXTdNATOIJ45ItU8HqoO62f5gsRQwp0=; b=Y/6XiWdSg4goeSmqp7JtCq+ycSSGqncUA9FytKO6gi2lQ+wdg7Ok9LUMqm12T5ZzeN rKZUsRBUUhz2uQ8Nl7++ZnRlLJNJcucP03wXLyHS/xshzOwo6sWXVMBcl4WykECEJtET IK3tpEX92I0BVXezS7GPcBgRNziOkWc8XZth7tzo1pq0iOPor6M+ONNAlgneuufcfXgR GjHHkQ89HzYnPwt9hJK5AnzDgWoANqWxo99wHxZ9JU55K+SPoUxDSR3iBWuTATMJksyG SI6+i7nF0RiDmNDeBYXyrhP2sofyse0vXsbLlcf3iO/HMAXgEry6X0/UWCpF15CLwHhq pgIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h6si3258724ili.157.2021.05.13.04.42.09; Thu, 13 May 2021 04:42:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231433AbhEMKhL convert rfc822-to-8bit (ORCPT + 99 others); Thu, 13 May 2021 06:37:11 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:2495 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231231AbhEMKhJ (ORCPT ); Thu, 13 May 2021 06:37:09 -0400 Received: from dggeml755-chm.china.huawei.com (unknown [172.30.72.55]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Fgp0S6ClhzRgKY; Thu, 13 May 2021 18:33:28 +0800 (CST) Received: from dggpemm100008.china.huawei.com (7.185.36.125) by dggeml755-chm.china.huawei.com (10.1.199.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Thu, 13 May 2021 18:35:57 +0800 Received: from dggpeml500016.china.huawei.com (7.185.36.70) by dggpemm100008.china.huawei.com (7.185.36.125) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 13 May 2021 18:35:57 +0800 Received: from dggpeml500016.china.huawei.com ([7.185.36.70]) by dggpeml500016.china.huawei.com ([7.185.36.70]) with mapi id 15.01.2176.012; Thu, 13 May 2021 18:35:57 +0800 From: "Longpeng (Mike, Cloud Infrastructure Service Product Dept.)" To: Stefano Garzarella CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Gonglei (Arei)" , "Subo (Subo, Cloud Infrastructure Service Product Dept.)" , "David S . Miller" , Jakub Kicinski , Jorgen Hansen , Norbert Slusarek , Andra Paraschiv , Colin Ian King , "David Brazdil" , Alexander Popov , "lixianming (E)" Subject: RE: [RFC] vsock: notify server to shutdown when client has pending signal Thread-Topic: [RFC] vsock: notify server to shutdown when client has pending signal Thread-Index: AQHXRkna70IyCpulcUmMFYMN4BnQYKrgpa2AgACTRtA= Date: Thu, 13 May 2021 10:35:57 +0000 Message-ID: <558d53dd31dc4841b94c4ec35249ac80@huawei.com> References: <20210511094127.724-1-longpeng2@huawei.com> <20210513094143.pir5vzsludut3xdc@steredhat> In-Reply-To: <20210513094143.pir5vzsludut3xdc@steredhat> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.174.148.223] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Stefano, > -----Original Message----- > From: Stefano Garzarella [mailto:sgarzare@redhat.com] > Sent: Thursday, May 13, 2021 5:42 PM > To: Longpeng (Mike, Cloud Infrastructure Service Product Dept.) > > Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Gonglei (Arei) > ; Subo (Subo, Cloud Infrastructure Service Product > Dept.) ; David S . Miller ; Jakub > Kicinski ; Jorgen Hansen ; Norbert > Slusarek ; Andra Paraschiv ; > Colin Ian King ; David Brazdil > ; Alexander Popov ; > lixianming (E) > Subject: Re: [RFC] vsock: notify server to shutdown when client has pending > signal > > Hi, > thanks for this patch, comments below... > > On Tue, May 11, 2021 at 05:41:27PM +0800, Longpeng(Mike) wrote: > >The client's sk_state will be set to TCP_ESTABLISHED if the server > >replay the client's connect request. > >However, if the client has pending signal, its sk_state will be set to > >TCP_CLOSE without notify the server, so the server will hold the > >corrupt connection. > > > > client server > > > >1. sk_state=TCP_SYN_SENT | > >2. call ->connect() | > >3. wait reply | > > | 4. sk_state=TCP_ESTABLISHED > > | 5. insert to connected list > > | 6. reply to the client > >7. sk_state=TCP_ESTABLISHED | > >8. insert to connected list | > >9. *signal pending* <--------------------- the user kill client > >10. sk_state=TCP_CLOSE | > >client is exiting... | > >11. call ->release() | > > virtio_transport_close > > if (!(sk->sk_state == TCP_ESTABLISHED || > > sk->sk_state == TCP_CLOSING)) > > return true; <------------- return at here As a result, the server > >cannot notice the connection is corrupt. > >So the client should notify the peer in this case. > > > >Cc: David S. Miller > >Cc: Jakub Kicinski > >Cc: Stefano Garzarella > >Cc: Jorgen Hansen > >Cc: Norbert Slusarek > >Cc: Andra Paraschiv > >Cc: Colin Ian King > >Cc: David Brazdil > >Cc: Alexander Popov > >Signed-off-by: lixianming > >Signed-off-by: Longpeng(Mike) > >--- > > net/vmw_vsock/af_vsock.c | 1 + > > 1 file changed, 1 insertion(+) > > > >diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index > >92a72f0..d5df908 100644 > >--- a/net/vmw_vsock/af_vsock.c > >+++ b/net/vmw_vsock/af_vsock.c > >@@ -1368,6 +1368,7 @@ static int vsock_stream_connect(struct socket *sock, > struct sockaddr *addr, > > lock_sock(sk); > > > > if (signal_pending(current)) { > >+ vsock_send_shutdown(sk, SHUTDOWN_MASK); > > I see the issue, but I'm not sure is okay to send the shutdown in any case, > think about the server didn't setup the connection. > > Maybe is better to set TCP_CLOSING if the socket state was TCP_ESTABLISHED, > so the shutdown will be handled by the > transport->release() as usual. > > What do you think? > Your method looks more gracefully, we'll try it and get back to you, thanks. > Anyway, also without the patch, the server should receive a RST if it > sends any data to the client, but of course, is better to let it know > the socket is closed in advance. > Yes, agree. > Thanks, > Stefano