> > > diff --git a/net/vmw_vsock/virtio_transport_common.c
> > > b/net/vmw_vsock/virtio_transport_common.c
> > > index dcc8a1d5851e..b8e52c71920a 100644
> > > --- a/net/vmw_vsock/virtio_transport_common.c
> > > +++ b/net/vmw_vsock/virtio_transport_common.c
> > > @@ -316,6 +316,15 @@ static struct sk_buff
> > > *virtio_transport_alloc_skb(struct virtio_vsock_pkt_info *
> > > info->flags,
> > > zcopy);
> > >
> > > + /*
> > > + * If there is no corresponding socket, then we don't have a
> > > + * corresponding namespace. This only happens For VIRTIO_VSOCK_OP_RST.
> > > + */
> >
> > So, in virtio_transport_recv_pkt() should we check that `net` is not set?
> >
> > Should we set it to NULL here?
> >
>
> Sounds good to me.
>
> > > + if (vsk) {
> > > + virtio_vsock_skb_set_net(skb, info->net);
> >
> > Ditto here about the net refcnt, can the net disappear?
> > Should we use get_net() in some way, or the socket will prevent that?
> >
>
> As long as the socket has an outstanding skb it can't be destroyed and
> so will have a reference to the net, that is after skb_set_owner_w() and
> freeing... so I think this is okay.
>
> But, maybe we could simplify the implied relationship between skb, sk,
> and net by removing the VIRTIO_VSOCK_SKB_CB(skb)->net entirely, and only
> ever referring to sock_net(skb->sk)? I remember originally having a
> reason for adding it to the cb, but my hunch is it that it was probably
> some confusion over the !vsk case.
>
> WDYT?
>
... now I remember the reason, because I didn't want two different
places for storing the net for RX and TX.
Best,
Bobby