Stefano Garzarella
2023-Mar-06 12:08 UTC
[RFC PATCH v2 2/4] virtio/vsock: remove all data from sk_buff
On Sun, Mar 05, 2023 at 11:07:37PM +0300, Arseniy Krasnov wrote:>In case of SOCK_SEQPACKET all sk_buffs are used once - after read some >data from it, it will be removed, so user will never read rest of the >data. Thus we need to update credit parameters of the socket like whole >sk_buff is read - so call 'skb_pull()' for the whole buffer. > >Fixes: 71dc9ec9ac7d ("virtio/vsock: replace virtio_vsock_pkt with sk_buff") >Signed-off-by: Arseniy Krasnov <AVKrasnov at sberdevices.ru> >--- > net/vmw_vsock/virtio_transport_common.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)Maybe we could avoid this patch if we directly use pkt_len as I suggested in the previous patch. Thanks, Stefano> >diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c >index 2e2a773df5c1..30b0539990ba 100644 >--- a/net/vmw_vsock/virtio_transport_common.c >+++ b/net/vmw_vsock/virtio_transport_common.c >@@ -466,7 +466,6 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, > dequeued_len = err; > } else { > user_buf_len -= bytes_to_copy; >- skb_pull(skb, bytes_to_copy); > } > > spin_lock_bh(&vvs->rx_lock); >@@ -484,6 +483,7 @@ static int virtio_transport_seqpacket_do_dequeue(struct vsock_sock *vsk, > msg->msg_flags |= MSG_EOR; > } > >+ skb_pull(skb, skb->len); > virtio_transport_dec_rx_pkt(vvs, skb); > kfree_skb(skb); > } >-- >2.25.1 >