From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit05.runbox.com (mailtransmit05.runbox.com [185.226.149.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E20E54B1B8; Tue, 22 Sep 2026 13:15:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.38 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082943; cv=none; b=JawPf5LqpitkFL1Ap2bH42WfGMOwE3eKOFxANJw6rUG3aqS3JnrltJCOVWAv5Dy8UOGSADGVOVLHspBpH2KF6cYuv17AlywTCvry7pY9OsMpcr9J2UxOXf9kSsAI7WhF0Gs40fFRrAF4Wq0sTYsbxZli17FEPeqdBmljF/Gx4h0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082943; c=relaxed/simple; bh=Z3JNUkcIru63O0NeHXDbc+QM3RTFQuGiytm1kM/XnFk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RwK+eBbt7vkrVqrUZzErdPJu39PlCQ4ydcO8P8j7EKbRqFfjkER28r+5/OKgqg1zBde/qNPEUM8ASh3ApRMy0qPb82k1JoRc5SvB1QtjkBOb6hW9pFsErxNzIaXJGwOp6dxJPZKoutiJ33CTYDuPlQiqE1VyVjOaDYvdL7BSXok= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=DMXBSwDG; arc=none smtp.client-ip=185.226.149.38 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="DMXBSwDG" Received: from mailtransmit02.runbox ([10.9.9.162] helo=aibo.runbox.com) by mailtransmit05.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LH-005SDM-Vz; Tue, 22 Sep 2026 15:15:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=upTrSuyY4wF/GArbfk07giPQMunbifrM/wIJL3iqI5Q=; b=DMXBSwDGEyJBi5h6BGFctMc9V4 SuD5mHAELXA+QfGqbh3gDV36Qwqym/61BdZ9rGuDyU6Koj8SKRt3gUSs0tmTJftNCD2Y5lWCnfzjm tteoY4Ud6DzvBTRsm+3Mcf2iqg+o1oUpr8j043NwMBzmmnAaLoKzTAy/L/rQMES4JGvBfndaqj575 HAtnRYCE5PO3m8AoC9oqv+Ss2oMio0j9ZNyFVFQMvkZWlyET7POb0C0MUWZU2Lkj53TJtqmerL3AJ bI7mM64g8kiEddoAnBX6gxkzTTrbMlCmpJb0/WXZW66YvdkV/yfr7k5dRGzZQe8ZvtKnpipfyfh5X 8Zepvl0w==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit02.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LC-0004lG-Fs; Tue, 22 Sep 2026 15:15:22 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90Kz-00FyKH-JI; Tue, 22 Sep 2026 15:15:09 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:14:55 +0200 Subject: [PATCH net v3 1/8] vhost/vsock: Fix socket state constant Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-1-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 Refactor under Fixes missed one: SS_UNCONNECTED (1) -> TCP_CLOSE (7). Until now, sk->sk_state =3D 1 stood for TCP_ESTABLISHED. Fixes: 3b4477d2dcf2 ("VSOCK: use TCP state constants for sk_state") Reviewed-by: Stefano Garzarella Signed-off-by: Michal Luczaj --- drivers/vhost/vsock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index abed1fbcf66c..6051533456f6 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c @@ -774,7 +774,7 @@ static void vhost_vsock_reset_orphans(struct sock *sk) =20 sock_set_flag(sk, SOCK_DONE); vsk->peer_shutdown =3D SHUTDOWN_MASK; - sk->sk_state =3D SS_UNCONNECTED; + sk->sk_state =3D TCP_CLOSE; sk->sk_err =3D ECONNRESET; sk_error_report(sk); } --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit05.runbox.com (mailtransmit05.runbox.com [185.226.149.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88D205505D6; Tue, 22 Sep 2026 13:15:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.38 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082947; cv=none; b=sKDwTv0nJn+V4jnIHsXVUh0QG1uDyhApZyk33PXOxPEZhQbuxaKU0NfGRyfyHY8zvcgNZUF9FOSVCzZ1QAbscXwIHPZWdcUNG5d5r3+WC6HJXuGLwDnxMvwlk189wXwaaN22x8XMn1/yUKDwpwxKPY/rEn98iT7hxHEIzNn0iBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082947; c=relaxed/simple; bh=COxZrODMiG7wpwflNvDJFwyGJhZfUhncxZCYcHISVNk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LVmBXMtGP38VAcz/26loQ47eVciCL0ew34KmpAMLu1qf5gMgH1S818Tr5FnbVLmHAVZVFJepP8zhjI1gJR+57Fz8YPiplwN8pFkd5+B7C+MM9Nx0PRBseZ3SxQbdhEsxiKKOQzZD+xdJ3mCML3PZtZ+6eKNNEhjnGhsu1kHxL7A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=nk+X5nxP; arc=none smtp.client-ip=185.226.149.38 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="nk+X5nxP" Received: from mailtransmit03.runbox ([10.9.9.163] helo=aibo.runbox.com) by mailtransmit05.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LK-005SFV-MV; Tue, 22 Sep 2026 15:15:30 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=h3c4JhoACmkDINEFsPgIY9AtPg/o1ylbFwdojB2jwYs=; b=nk+X5nxPTjjrwGFmtFlogUDUfW qFG9NvJ1BWKIU4T7xA4uOTGkKeus8B9UA7Z+vUYlP/0xxO5XwrwySVa/UQhaarG52iNUFK9wj0uRz 8vnWp2jr6L59GELRCThq8/CauIxkrA2JESra56h0QF69DR98NYHN3TdIkk6kn/dM96ALyiqz/ozse 4Z0QwtB1AmIKKncIWU0d3JI7G7bOuTpKZopx9Aw+RM+NjdyWwv4liqI4IEAhbLJeEDoL+2yRU8Uo7 fc28cjImFVk3abQJIaKWomTlSDlvFUTXMLAf9fZM2VQAPGqQ5Br48ibYX0XRkuiI6YvSvfyhWP9za C7eTT0gA==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LC-0006N5-S1; Tue, 22 Sep 2026 15:15:25 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L0-00FyKH-EN; Tue, 22 Sep 2026 15:15:10 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:14:56 +0200 Subject: [PATCH net v3 2/8] vsock: simplify error check condition Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-2-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 On success, vsock_assign_transport() ensures transport !=3D NULL. Drop the redundant check. Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 9b71479a2b29..5c8e7e7d35b4 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1757,8 +1757,7 @@ static int vsock_connect(struct socket *sock, struct = sockaddr_unsized *addr, /* The hypervisor and well-known contexts do not have socket * endpoints. */ - if (!transport || - !transport->stream_allow(vsk, remote_addr->svm_cid, + if (!transport->stream_allow(vsk, remote_addr->svm_cid, remote_addr->svm_port)) { err =3D -ENETUNREACH; goto out; --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit04.runbox.com (mailtransmit04.runbox.com [185.226.149.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A8676560AA5; Tue, 22 Sep 2026 13:16:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.37 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082977; cv=none; b=UxkZIXRWKZtCRm8US3YvjilxE4IYWaTIUhYsRRN7rP6nByvNP1LctiWi1UZXr6Sor2nOf635qUomHxZfcmtLjp03kx5NDM6LHveOVq2LA7smezQUeaKK6aZJKHHnGkbN/59PbavYWvfQoOXytA2+zZQ+ATCzRejdrkzkI3lTEuY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082977; c=relaxed/simple; bh=r8NN3NsziCexxlU2xLKrqIKiEyrwoVWHBd7Ms4fyzWM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FIRXDtT1vtjwyc/tWrMPsT8u+tVGdtTeyVzaP+ZcT9pRVaVfUDlT79DSv/lkSVCXii5Jsm4FC39sQayhtuJHee6c5W9wJ2mEsbc7QjFDQBLF+qR0aHOhf3f+yib2qN+g1cBuLLH8VfdkJ8DSOJFZBkzcElQmmV7gmYVhT/SDawg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=bRntzqzK; arc=none smtp.client-ip=185.226.149.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="bRntzqzK" Received: from mailtransmit03.runbox ([10.9.9.163] helo=aibo.runbox.com) by mailtransmit04.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LN-0038Q8-9i; Tue, 22 Sep 2026 15:15:33 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=lbdOrdNqth7S8nRKENaJcwv9RjD3QxuDxfCngDXfIPk=; b=bRntzqzKvoBagHMsTC+KL8N1+Y 5G5wN4PpvjlYY92nlX0p/P4/UZUWaaOL3nx/K9/F3XMHR3pb4JUHax0opYEGJzNbNDeKnVwPKW8t7 tYHJFcFxsSo5VAwMyeAuIfamjvwAl/8kzLAGyqnuK1V+q/Tb5OUP+50oXrTtMQFqt4wkCszFH6xbO 8h8wvsWBhw5ZVtMnxGRPO12hAtQ6pXUDrd+Boy5MUV+Y+OjLZpEaxJUQxCXyn8GJ4IHWsD0aSKQpF OmkeaTD2b58woFb1d/hDRCAUz7jKkMDIjVVuk0jyepl4rC3pP73POrIGjGWDs/C33sYJASns8d30U NSJGMf5g==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LC-0006N1-L6; Tue, 22 Sep 2026 15:15:22 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L1-00FyKH-Ab; Tue, 22 Sep 2026 15:15:11 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:14:57 +0200 Subject: [PATCH net v3 3/8] vsock: do not preserve transport assignment Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-3-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 Introduce vsock_unconnected_reset() and adapt vsock_connect(). Change transport assignment life cycle. On connect(), socket gets a transport assigned. If connection fails (init went wrong, peer misbehaviour, time out, signal), transport is de-assigned and socket state is re-initialized. Once the connection is established, transport remains assigned until close(). Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 74 ++++++++++++++++++++++++++++++--------------= ---- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 5c8e7e7d35b4..20181ddde114 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1679,6 +1679,42 @@ static int vsock_transport_cancel_pkt(struct vsock_s= ock *vsk) return transport->cancel_pkt(vsk); } =20 +static void vsock_unconnected_reset(struct sock *sk) +{ + struct vsock_sock *vsk =3D vsock_sk(sk); + + sock_owned_by_me(sk); + + /* + * Only connected socks may have peer_shutdown or SOCK_DONE set. + * + * Once established (TCP_ESTABLISHED, TCP_CLOSING), a socket can be + * de-assigned only on close(). But we can narrow the check down to + * states we actually expect (TCP_SYN_SENT, TCP_CLOSE). + */ + if (WARN_ON_ONCE(vsk->peer_shutdown) || + WARN_ON_ONCE(sock_flag(sk, SOCK_DONE)) || + WARN_ON_ONCE(sk->sk_state !=3D TCP_SYN_SENT && + sk->sk_state !=3D TCP_CLOSE)) + return; + + /* + * Try to cancel a VIRTIO_VSOCK_OP_REQUEST skb that may have been sent + * out by transport->connect(). + */ + vsock_transport_cancel_pkt(vsk); + + /* + * No need to invoke transport->release() for unconnected connectible + * sockets. Go straight for transport deassign. + */ + vsock_deassign_transport(vsk); + + /* Revert socket to initial state. Keep sk_err. */ + WRITE_ONCE(sk->sk_state, TCP_CLOSE); + sk->sk_socket->state =3D SS_UNCONNECTED; +} + static void vsock_connect_timeout(struct work_struct *work) { struct sock *sk; @@ -1690,11 +1726,9 @@ static void vsock_connect_timeout(struct work_struct= *work) lock_sock(sk); if (sk->sk_state =3D=3D TCP_SYN_SENT && (sk->sk_shutdown !=3D SHUTDOWN_MASK)) { - sk->sk_state =3D TCP_CLOSE; - sk->sk_socket->state =3D SS_UNCONNECTED; sk->sk_err =3D ETIMEDOUT; sk_error_report(sk); - vsock_transport_cancel_pkt(vsk); + vsock_unconnected_reset(sk); } release_sock(sk); =20 @@ -1760,7 +1794,7 @@ static int vsock_connect(struct socket *sock, struct = sockaddr_unsized *addr, if (!transport->stream_allow(vsk, remote_addr->svm_cid, remote_addr->svm_port)) { err =3D -ENETUNREACH; - goto out; + goto out_reset; } =20 if (vsock_msgzerocopy_allow(transport)) { @@ -1771,18 +1805,18 @@ static int vsock_connect(struct socket *sock, struc= t sockaddr_unsized *addr, * feature is supported here. */ err =3D -EOPNOTSUPP; - goto out; + goto out_reset; } =20 err =3D vsock_auto_bind(vsk); if (err) - goto out; + goto out_reset; =20 sk->sk_state =3D TCP_SYN_SENT; =20 err =3D transport->connect(vsk); if (err < 0) - goto out; + goto out_reset; =20 /* sk_err might have been set as a result of an earlier * (failed) connect attempt. @@ -1825,8 +1859,9 @@ static int vsock_connect(struct socket *sock, struct = sockaddr_unsized *addr, timeout)) sock_put(sk); =20 + finish_wait(sk_sleep(sk), &wait); /* Skip ahead to preserve error code set above. */ - goto out_wait; + goto out; } =20 release_sock(sk); @@ -1844,12 +1879,7 @@ static int vsock_connect(struct socket *sock, struct= sockaddr_unsized *addr, break; =20 /* If connection was _not_ established and a signal/timeout came - * to be, we want the socket's state reset. User space may want - * to retry. - * - * sk_state !=3D TCP_ESTABLISHED implies that socket is not on - * vsock_connected_table. We keep the binding and the transport - * assigned. + * to be, we want the socket's state reset. We keep the binding. */ if (signal_pending(current) || timeout =3D=3D 0) { err =3D timeout =3D=3D 0 ? -ETIMEDOUT : sock_intr_errno(timeout); @@ -1859,14 +1889,6 @@ static int vsock_connect(struct socket *sock, struct= sockaddr_unsized *addr, * sk_state =3D=3D TCP_SYN_SENT, which hereby we break. * In such case VIRTIO_VSOCK_OP_RST will follow. */ - sk->sk_state =3D TCP_CLOSE; - sock->state =3D SS_UNCONNECTED; - - /* Try to cancel VIRTIO_VSOCK_OP_REQUEST skb sent out by - * transport->connect(). - */ - vsock_transport_cancel_pkt(vsk); - goto out_wait; } =20 @@ -1874,13 +1896,11 @@ static int vsock_connect(struct socket *sock, struc= t sockaddr_unsized *addr, } =20 err =3D sock_error(sk); - if (err) { - sk->sk_state =3D TCP_CLOSE; - sock->state =3D SS_UNCONNECTED; - } - out_wait: finish_wait(sk_sleep(sk), &wait); +out_reset: + if (err) + vsock_unconnected_reset(sk); out: release_sock(sk); return err; --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit04.runbox.com (mailtransmit04.runbox.com [185.226.149.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EF275540A9; Tue, 22 Sep 2026 13:16:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.37 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082964; cv=none; b=nLWlGfsaidT9XXWfqJESKLZp9jT927XbfT7JgBXBYJnDJoSM7G1iD8KpChJ2AkplaK16XHIImu8bJ+bMOTqHy20jh6XAjUh2refV+mkFGzmVEErfYQF5L+PKC+A3AHDjsoyyzXpVt2YlA/iHD8yMbam9b9dBIOyPqzdhrws1vfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082964; c=relaxed/simple; bh=xjxMj5fyJ8uRoxQUEePWAv5baer14/CnbPc2DvpEEm0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cgHb9otxxysQgzh0om4A1168JHVQnMXVsiawXDrW0RsXMaXTcjZnFEpF9vHCwqqJf+GW1HJLfDm6brJF9nSaIdaCNxu/sUj4QRdsu62BoPRTM0D3JzvoEE5bAy0+tdmA5mnzxKFvqz7o6zfPEp91aQPSgou9ciY2cO3jXUxH5Fs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=pi+CCpbg; arc=none smtp.client-ip=185.226.149.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="pi+CCpbg" Received: from mailtransmit02.runbox ([10.9.9.162] helo=aibo.runbox.com) by mailtransmit04.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LI-0038Nt-5H; Tue, 22 Sep 2026 15:15:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=q577QjiF0mCARGW9xPaIu3zNyMU5NJhn62SphWcTBHI=; b=pi+CCpbgIJ6+RdP4k9VTlBvvtv rQ0zZ/L3wzyngCgE+lwfzBRiIv4EXgru6jqoHziFZ0qAk0lGRu4jZIsbMUD+A5obPGa7GGkkv7P7F fThqc6R/rpOpsugrOTY6DjafuV/hk0ahOzuhs6VZWzW5RDtfiuk90QclQokjhNTUN7Ntc1b90YGfj tiFCH9F2b76XNs/c2fkTce/WNMKaceYhqvJGUTt1hkl+z0eTRNoZFBRxl137oGa6mF9yu2GiRc3q3 BYLKWob00+GTpntk47/eXBlGgR8fRvtl2+wNRASBWHCWPnY+Sgz353Q27itP9L0o44LN0d3BPkFTr EFCdNOjg==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit02.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LC-0004lC-81; Tue, 22 Sep 2026 15:15:22 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L2-00FyKH-66; Tue, 22 Sep 2026 15:15:12 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:14:58 +0200 Subject: [PATCH net v3 4/8] vsock: drop the re-assignment logic Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-4-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 On a failed connect(), transport is de-assigned. Connected socket keeps transport until close(). Hence, no more re-assigning. Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 20181ddde114..5cecd1c9c6e5 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -604,6 +604,9 @@ int vsock_assign_transport(struct vsock_sock *vsk, stru= ct vsock_sock *psk) __u8 remote_flags; int ret; =20 + if (WARN_ON_ONCE(vsk->transport || vsk->trans)) + return -EINVAL; + /* If the packet is coming with the source and destination CIDs higher * than VMADDR_CID_HOST, then a vsock channel where all the packets are * forwarded to the host should be established. Then the host will @@ -649,11 +652,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, str= uct vsock_sock *psk) goto err; } =20 - if (vsk->transport && vsk->transport =3D=3D new_transport) { - ret =3D 0; - goto err; - } - /* We increase the module refcnt to prevent the transport unloading * while there are open sockets assigned to it. */ @@ -668,26 +666,6 @@ int vsock_assign_transport(struct vsock_sock *vsk, str= uct vsock_sock *psk) */ mutex_unlock(&vsock_register_mutex); =20 - if (vsk->transport) { - /* transport->release() must be called with sock lock acquired. - * This path can only be taken during vsock_connect(), where we - * have already held the sock lock. In the other cases, this - * function is called on a new socket which is not assigned to - * any transport. - */ - vsk->transport->release(vsk); - vsock_deassign_transport(vsk); - - /* transport's release() and destruct() can touch some socket - * state, since we are reassigning the socket to a new transport - * during vsock_connect(), let's reset these fields to have a - * clean state. - */ - sock_reset_flag(sk, SOCK_DONE); - sk->sk_state =3D TCP_CLOSE; - WRITE_ONCE(vsk->peer_shutdown, 0); - } - if (sk->sk_type =3D=3D SOCK_SEQPACKET) { if (!new_transport->seqpacket_allow || !new_transport->seqpacket_allow(vsk, remote_cid)) { --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit04.runbox.com (mailtransmit04.runbox.com [185.226.149.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D38555409A; Tue, 22 Sep 2026 13:15:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.37 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082964; cv=none; b=DHe9nOiuvbwxP9jSKLL92hfxbMx5ksS9sYeEjaGEY2Ge+9FZRXlrzHba+S8PlJe5AQJ+G0XzLXbkssMG66/ujq7a2EL791Jw4+SrkFqjtYfVfMhPyI2kg98MN+6G+vwH28BJEtWjZ4G5plMEInFcc1CRQS7gJYHXP6evynk0o1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082964; c=relaxed/simple; bh=LY8LmPKAONxW9j4eK8b29/UnBFRwaSSytBU8oXUdKjg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mNbDclQvthK4GtyDEb1yadC6z+wnK96ZO9r+PPIHJXbhpYGpPRxWFxuRpOtF46eMQc3fUgFkOmomqQOf6KmW1O+GBArPtOA4TjY8VtULmIj7wCnAhRTo+HwF+qU8yjUtwQfdadBZDAy468u80O3VcoLV72d4+8PoDWARd4EJwmI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=rAbQgO3t; arc=none smtp.client-ip=185.226.149.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="rAbQgO3t" Received: from mailtransmit02.runbox ([10.9.9.162] helo=aibo.runbox.com) by mailtransmit04.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LM-0038Q0-C4; Tue, 22 Sep 2026 15:15:32 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=ilNAZyblMrw/p18wPajPZWU+KdUJfZ5kiK/NIQQUstY=; b=rAbQgO3ts0fnccl9zDnD1KwhxK vv7Gkgw3OYOrSKFRpYQcIx4N2v6/ShwDGAOr00poGK7HGbWFshq8ppokDUBjBLkxDxrp5uZmNE36D w9EduDcSgylbcp4c5OjBl55SSg9PrKRLy21z4rJV00xJtLjIF+4ptnFXFEnHqGP4xhvKb/bjh85iE tMasyExklO6ZC53keGN6bCk2h3iAQCn0fhEiI00G19Nx3U6wbbJ7m94Rg4d15k+vISKu+fWS7lt0u 5Kkxojde3JGN8nBVl18VfVh8HTtQLaxZW5nLUXoHlYLRV1OKM/iFe/Ny8shBbwuOqZ9XegH7ZQjOb nGk2lgrA==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit02.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LG-0004oC-Pf; Tue, 22 Sep 2026 15:15:27 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L3-00FyKH-3l; Tue, 22 Sep 2026 15:15:13 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:14:59 +0200 Subject: [PATCH net v3 5/8] vsock: treat TCP_CLOSING as once-established Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-5-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Hyunwoo Kim , Michal Luczaj X-Mailer: b4 0.15.2 When connect() is scheduled out awaiting TCP_SYN_SENT -> TCP_ESTABLISHED, socket may already transition TCP_ESTABLISHED -> TCP_CLOSING (VIRTIO_VSOCK_OP_RST) or have sk_err set (VIRTIO_VSOCK_OP_RW). Short circuit the logic; do not assume a non-zero sk_err signifies a failed connect. connect() should return the status of connection attempt itself, not what followed. Fixes: d021c344051a ("VSOCK: Introduce VM Sockets") Reported-by: Hyunwoo Kim Link: https://lore.kernel.org/netdev/anzT1fREOSyHT99k@v4bel/ Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 5cecd1c9c6e5..ff4140aaf1f3 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1846,15 +1846,19 @@ static int vsock_connect(struct socket *sock, struc= t sockaddr_unsized *addr, timeout =3D schedule_timeout(timeout); lock_sock(sk); =20 - /* Connection established. Whatever happens to socket once we - * release it, that's not connect()'s concern. No need to go + /* Connection was established. Whatever happens to socket once + * we release it, that's not connect()'s concern. No need to go * into signal and timeout handling. Call it a day. * * Note that allowing to "reset" an already established socket * here is racy and insecure. */ - if (sk->sk_state =3D=3D TCP_ESTABLISHED) - break; + if (sk->sk_state =3D=3D TCP_ESTABLISHED || + sk->sk_state =3D=3D TCP_CLOSING) { + err =3D 0; + finish_wait(sk_sleep(sk), &wait); + goto out; + } =20 /* If connection was _not_ established and a signal/timeout came * to be, we want the socket's state reset. We keep the binding. @@ -1877,8 +1881,7 @@ static int vsock_connect(struct socket *sock, struct = sockaddr_unsized *addr, out_wait: finish_wait(sk_sleep(sk), &wait); out_reset: - if (err) - vsock_unconnected_reset(sk); + vsock_unconnected_reset(sk); out: release_sock(sk); return err; --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit05.runbox.com (mailtransmit05.runbox.com [185.226.149.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19DF3550DAF; Tue, 22 Sep 2026 13:15:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.38 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082942; cv=none; b=AI9ltxBjuJ/qUzf4KD6Pe5YIn7n5ogkWHlo5tub+RZYqRm3G/VJrB3y3Th28BM0JEib56pR+1XWnC+V6kK2pYXNchSvqPwIl2OJp7eal3aJFNia+AMM2HLXkWBgLS3GfdfrFxzycolTM4H5QAScywfD94e+nR8c9YmFpy4XgfXU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082942; c=relaxed/simple; bh=XVovbV4MiKgVnCHFfITuoF6Ff9BScK9zcsSsj4gL0h8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sbFbGSTFVkhVGmTM+ALdPnEX0yCKtWfl/YCT59N4fwFGaJF3CncJEbn+cZcPGrq2iRXv8hzr6WlL4iBw2RrDj277wRUIMlCdk+ENDg1KnEU3c9p2zcrteBwvioiNkyvFNHRVdiNRMlSIN4LFdqLBRlr9987j2OXhZN079auZeoA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=IbXR9pBy; arc=none smtp.client-ip=185.226.149.38 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="IbXR9pBy" Received: from mailtransmit03.runbox ([10.9.9.163] helo=aibo.runbox.com) by mailtransmit05.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LN-005SFx-3e; Tue, 22 Sep 2026 15:15:33 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=bArskdOfI8ynyADnsLgfNNIW4cga+YxDLW0nf10f/Ns=; b=IbXR9pBywQnF5ewMnRjGpz425K 7f+MrIADThYPOyF835Rfic8cRXQK/+sNcugF/aiutFfsRpNRg4k01tRna2+sD2v+Q/Xz6xZ1fqpK4 V5DcbPDKAzcV+8btar73T3JcStoPcGKPlNqbdOB6mlPGI1xiDNJwGr/tIYGAdaABwPnza4oRhcEHd 7x8x+yjkChF0NI22pgq1BIOwP8MzEatliBVtAig1ZU05l9RUl6dXTC24Y4P6W6Zud/LSFGi5VNmwr yWoMIfxrwik5zQG14cHQeOcXxNfNONdivwzvjw2Tl901HjwtWLcAEhYO9kW8LIGf2Hk5x8z8KhEmE dv6ApVmg==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LH-0006Oe-5b; Tue, 22 Sep 2026 15:15:27 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L3-00FyKH-VH; Tue, 22 Sep 2026 15:15:14 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:15:00 +0200 Subject: [PATCH net v3 6/8] vsock: handle socket bricking due to transport event Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-6-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 Transport events are serviced by resetting each connected socket. The reset is done under vsock_table_lock but without taking lock_sock(), so from the point of view of vsock_connect() - locklessly. The same pattern is present in virtio_vsock_reset_sock(), vmci_transport_handle_detach() and vhost_vsock_reset_orphans(). While connect() waits for TCP_SYN_SENT -> TCP_ESTABLISHED, other transitions can also occur: TCP_SYN_SENT -> TCP_CLOSE on connection failure, timeout or signal TCP_SYN_SENT -> TCP_ESTABLISHED -> TCP_CLOSING on VIRTIO_VSOCK_OP_RST TCP_SYN_SENT -> TCP_ESTABLISHED -> [TCP_CLOSING ->] TCP_CLOSE on event But transport events leave SS_CONNECTED state unchanged. So take a note of that, rather than a) making every event handler drop the socket from connected_table, or b) adapting connect() to handle more transitions (while missing proper locking). Fixes: d021c344051a ("VSOCK: Introduce VM Sockets") Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index ff4140aaf1f3..5a2d7e10ecb8 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1663,6 +1663,19 @@ static void vsock_unconnected_reset(struct sock *sk) =20 sock_owned_by_me(sk); =20 + /* + * Transport events are serviced by resetting each connected socket to + * TCP_CLOSE. The reset is done under vsock_table_lock but without + * taking lock_sock(), so it is effectively lockless from the + * perspective of connect(). + * + * Preserve socket's bricked status. Also check SS_DISCONNECTING, since + * shutdown() may race us. + */ + if (sk->sk_socket->state =3D=3D SS_CONNECTED || + sk->sk_socket->state =3D=3D SS_DISCONNECTING) + return; + /* * Only connected socks may have peer_shutdown or SOCK_DONE set. * --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit04.runbox.com (mailtransmit04.runbox.com [185.226.149.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38BE85540A6; Tue, 22 Sep 2026 13:16:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.37 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082972; cv=none; b=lr00bDPkiU2nxtSFBGumMHFLdFqrwNO3Vjt9pgumK6fA4mRwuwx9W7IXUTiSmk6HZ7sdh9ZlWxVsLEx/5y8fQhktHf4dLKLVxxD2BtaelvxBKlvc8RsDH9HDEurkhAKvlEqvSxrf2/AVqlQa55yaxCLuw9xxBsed0Wket3eu2oQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082972; c=relaxed/simple; bh=aSBDtneI0GuyWrBLnzihtMTMp8WnnGR7PRiFlojtJc8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DJiUWAxfw5GXdAq307sYH4UStSHV3lBHPvF3+OKu2a7iRJbL9+P1yfTiG0CpAxHW9hPtKYh8FCpeeIvx/F7j48Es/f8Qq+ag1lW2oAxt4vfZTnZdA1WDcH0pMwYAQymGHPKlC2wdX/5Hp2nyKAvF/WDYNW9HUe1ukP/gxCL0Ic4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=S7L+X9Mx; arc=none smtp.client-ip=185.226.149.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="S7L+X9Mx" Received: from mailtransmit03.runbox ([10.9.9.163] helo=aibo.runbox.com) by mailtransmit04.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LL-0038Px-Ml; Tue, 22 Sep 2026 15:15:31 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=iShgG+Cn+uv/wW9kXnl4imuLrgb+gLoBGKjVnssyxu4=; b=S7L+X9MxI6kjXKMsY1UPAwxDIs AVpYM9GsZJeHZP5oRA1bveuR1Z08unYX9LKrHDWjpw1ltUt2Os6FB6vufYtz/P1l3LmCoj5Z4hwLY reS8j7/oRPZkTKE28mqSHEn/vb4x8pYCYCh8x0iwa2Rzj8IRoVkoB8Yxf6l0chEDMIryFSvj9472Q gaoBTj9gQCs7+Cx36OBPbeiNoCIVjI4T75jckOf/CXFd20/mZdg/bm8em5OtDc5PJlNjNoZxiO7NV r3mL80HR2px52rYISGMbqt2unZz3q5N5xObS7jF/CXziAjqOIEFL93zIPZdJ4AmOH2nIbzAlrugAG Rk8n9tWQ==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LF-0006NX-5s; Tue, 22 Sep 2026 15:15:26 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L4-00FyKH-SV; Tue, 22 Sep 2026 15:15:15 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:15:01 +0200 Subject: [PATCH net v3 7/8] vsock: handle listen() racing connect() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-7-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 Socket can flip to TCP_LISTEN when connect() schedules out. Respect listen() winning the race: let connect() time out, but don't reset the socket. sk is CLOSE UNCONNECTED non-blocking connect(): sk :=3D SYN_SENT CONNECTING enqueue vsock_connect_timeout() blocking connect(): release_sock() schedule_timeout() vsock_connect_timeout(): sk :=3D CLOSE UNCONNECTED listen(): sk :=3D LISTEN UNCONNECTED lock_sock() sk is TCP_LISTEN UNCONNECTED Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 5a2d7e10ecb8..56c595942456 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1663,6 +1663,13 @@ static void vsock_unconnected_reset(struct sock *sk) =20 sock_owned_by_me(sk); =20 + /* + * listen() can race connect() on schedule_timeout(). + * Don't reset TCP_LISTEN. + */ + if (sk->sk_state =3D=3D TCP_LISTEN) + return; + /* * Transport events are serviced by resetting each connected socket to * TCP_CLOSE. The reset is done under vsock_table_lock but without --=20 2.55.0 From nobody Thu Sep 24 15:11:58 2026 Received: from mailtransmit04.runbox.com (mailtransmit04.runbox.com [185.226.149.37]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A847B560AA3; Tue, 22 Sep 2026 13:16:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.226.149.37 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082973; cv=none; b=GAO8upNekxHs9MNvMXyUjtKTvSz+CpV9LYcnaMOUmvvQs02XmqB4N/h9DOGKA6ScddQrhFF+EcZYryq+GkIwKo/esHDlglTEqsoPJtns/isWQIYPxa3vGy+ui22BFo+ccTbOtNqykUAI5Gbsubtm/0AMvw6x4NGT+pAzwiBJfuE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790082973; c=relaxed/simple; bh=3e88C8MD0MTi4zk76RfIGYwE4rL5JwPj8Xe4qyLb/vs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K+RM4tQD9biMzT524LKcU2hiFnwRrOEDoc7Qwp5lpeQ0xCXw2E+OeFnyGu/+MI+ygZzNJa7Z8d4Y7QE1mGBb+hNR2x0MS0vszbZPuh2yNSjDuOQukcjdTgEPj6mj3Zq7T+tpPbjsP4pl5cbQuTUZeh4cCIbYTS/eF4gr35ITvyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co; spf=pass smtp.mailfrom=rbox.co; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b=vaZh1CK3; arc=none smtp.client-ip=185.226.149.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rbox.co Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rbox.co Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rbox.co header.i=@rbox.co header.b="vaZh1CK3" Received: from mailtransmit03.runbox ([10.9.9.163] helo=aibo.runbox.com) by mailtransmit04.runbox.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1x90LI-0038Ny-B7; Tue, 22 Sep 2026 15:15:28 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=rbox.co; s=selector1; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From; bh=KqEsGGQym9dCf7XblsGQZB4/Hmko4QBycE9bOomA3ng=; b=vaZh1CK3mSr6k3khPux/ezZb4p EhCcJx5zS0hPoO12vLl/irCRT/2cThrAteJF9SmsOqU6GTvlXOcYxpvkY452mXOwR3a42buGtvm81 mL67kou6DWJzCD+QZ9qfpU+x4tK1lXNojXpP+znrHRljISW3M3tkFAaei6To3jIetNUTHfyslvjXF wpQBXzWIjkrS50FXslzGoBDDyGT/Ygev/Zxm7CzTGPaUTFXUSKOecJS0OaHkPbI5diOJllcwDT8tf ZDgkpGq5mY1AFs4tzHNdIreHY1VtmNol4o923PF/+L3mWG2AjJ0/pRZel7HdP3t/brAgv4mU8Z3aW JUYf/69Q==; Received: from [10.9.9.72] (helo=submission01.runbox) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1x90LC-0006Mx-0W; Tue, 22 Sep 2026 15:15:22 +0200 Received: by submission01.runbox with esmtpsa [Authenticated ID (604044)] (TLS1.2:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim 4.95) id 1x90L5-00FyKH-OI; Tue, 22 Sep 2026 15:15:15 +0200 From: Michal Luczaj Date: Tue, 22 Sep 2026 15:15:02 +0200 Subject: [PATCH net v3 8/8] vsock: enforce no-transport invariant for TCP_LISTEN sockets Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260922-vsock-connect-reset-closing-v3-8-78907b8200d4@rbox.co> References: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> In-Reply-To: <20260922-vsock-connect-reset-closing-v3-0-78907b8200d4@rbox.co> To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , =?utf-8?q?Eugenio_P=C3=A9rez?= , "David S. Miller" , Xuan Zhuo , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: kvm@vger.kernel.org, virtualization@lists.linux.dev, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Luczaj X-Mailer: b4 0.15.2 In the past, listener socket could carry an assigned transport (uselessly, but harmlessly, except for unnecessarily hogging the kernel module refcnt). That's not the case anymore. Express/enforce the invariant. Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 56c595942456..9ba21a448cfa 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1993,13 +1993,13 @@ static int vsock_listen(struct socket *sock, int ba= cklog) goto out; } =20 - if (sock->state !=3D SS_UNCONNECTED) { + vsk =3D vsock_sk(sk); + + if (sock->state !=3D SS_UNCONNECTED || WARN_ON_ONCE(vsk->transport)) { err =3D -EINVAL; goto out; } =20 - vsk =3D vsock_sk(sk); - if (!vsock_addr_bound(&vsk->local_addr)) { err =3D -EINVAL; goto out; --=20 2.55.0