Skip to content

Commit ae8a2e3

Browse files
committed
vsock: reset socket state when de-assigning the transport
jira VULN-80680 cve-pre CVE-2025-38461 commit-author Stefano Garzarella <[email protected]> commit a24009b Transport's release() and destruct() are called when de-assigning the vsock transport. These callbacks can touch some socket state like sock flags, sk_state, and peer_shutdown. Since we are reassigning the socket to a new transport during vsock_connect(), let's reset these fields to have a clean state with the new transport. Fixes: c0cfa2d ("vsock: add multi-transports support") Cc: [email protected] Signed-off-by: Stefano Garzarella <[email protected]> Reviewed-by: Luigi Leonardi <[email protected]> Signed-off-by: Paolo Abeni <[email protected]> (cherry picked from commit a24009b) Signed-off-by: Roxana Nicolescu <[email protected]>
1 parent 0499884 commit ae8a2e3

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

net/vmw_vsock/af_vsock.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,15 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
479479
*/
480480
vsk->transport->release(vsk);
481481
vsock_deassign_transport(vsk);
482+
483+
/* transport's release() and destruct() can touch some socket
484+
* state, since we are reassigning the socket to a new transport
485+
* during vsock_connect(), let's reset these fields to have a
486+
* clean state.
487+
*/
488+
sock_reset_flag(sk, SOCK_DONE);
489+
sk->sk_state = TCP_CLOSE;
490+
vsk->peer_shutdown = 0;
482491
}
483492

484493
/* We increase the module refcnt to prevent the transport unloading

0 commit comments

Comments
 (0)