On Mon, Nov 17, 2025 at 06:00:28PM -0800, Bobby Eshleman wrote:
>From: Bobby Eshleman <bobbyeshleman@meta.com>
>
>Associate reply packets with the sending socket. When vsock must reply
>with an RST packet and there exists a sending socket (e.g., for
>loopback), setting the skb owner to the socket correctly handles
>reference counting between the skb and sk (i.e., the sk stays alive
>until the skb is freed).
>
>This allows the net namespace to be used for socket lookups for the
>duration of the reply skb's lifetime, preventing race conditions between
>the namespace lifecycle and vsock socket search using the namespace
>pointer.
>
>Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
>---
>Changes in v10:
>- break this out into its own patch for easy revert (Stefano)
>---
> net/vmw_vsock/virtio_transport_common.c | 6 ++++++
> 1 file changed, 6 insertions(+)
IIUC the previous patch only works well whit this one applied, right?
Please pay more attention to the order; we never want to break the
bisection.
Thanks,
Stefano
>
>diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c
>index 168e7517a3f0..5bb498caa19e 100644
>--- a/net/vmw_vsock/virtio_transport_common.c
>+++ b/net/vmw_vsock/virtio_transport_common.c
>@@ -1181,6 +1181,12 @@ static int virtio_transport_reset_no_sock(const struct virtio_transport *t,
> .type = le16_to_cpu(hdr->type),
> .reply = true,
>
>+ /* Set sk owner to socket we are replying to (may be NULL for
>+ * non-loopback). This keeps a reference to the sock and
>+ * sock_net(sk) until the reply skb is freed.
>+ */
>+ .vsk = vsock_sk(skb->sk),
>+
> /* net or net_mode are not defined here because we pass
> * net and net_mode directly to t->send_pkt(), instead of
> * relying on virtio_transport_send_pkt_info() to pass them to
>
>--
>2.47.3
>