In the Linux kernel, the following vulnerability has been resolved:
vsock: Ignore signal/timeout on connect() if already established
During connect(), acting on a signal/timeout by disconnecting an already established socket leads to several issues:
- connect() invoking vsock_transport_cancel_pkt() ->
vvs->bytes_unsent. Which, in turn, confuses the SOCK_LINGER handling.
- connect() resetting a connected socket's state may race with socket
- connect() transitioning SS_CONNECTED -> SS_UNCONNECTED allows for a
Do not disconnect socket on signal/timeout. Keep the logic for unconnected sockets: they don't linger, can't be placed in a sockmap, are rejected by sendmsg().
[1]: https://lore.kernel.org/netdev/e07fd95c-9a38-4eea-9638-133e38c2ec9b@rbox.co/ [2]: https://lore.kernel.org/netdev/20250317-vsock-trans-signal-race-v4-0-fc8837f3f1d4@rbox.co/ [3]: https://lore.kernel.org/netdev/60f1b7db-3099-4f6a-875e-af9f6ef194f6@rbox.co/