virtio/vsock: don't drop skbuff on copy failure
authorArseniy Krasnov <avkrasnov@sberdevices.ru>
Tue, 14 Mar 2023 11:08:20 +0000 (14:08 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 16 Mar 2023 17:28:23 +0000 (17:28 +0000)
commit8daaf39f7f6ef53a11817f6a11ec104016c3545f
tree3f1bfdd54bb5e517746ad096ecbd04d1f2314050
parent6825e6b4f8e53799d83bc39ca6ec5baed4e2adde
virtio/vsock: don't drop skbuff on copy failure

This returns behaviour of SOCK_STREAM read as before skbuff usage. When
copying to user fails current skbuff won't be dropped, but returned to
sockets's queue. Technically instead of 'skb_dequeue()', 'skb_peek()' is
called and when skbuff becomes empty, it is removed from queue by
'__skb_unlink()'.

Fixes: 71dc9ec9ac7d ("virtio/vsock: replace virtio_vsock_pkt with sk_buff")
Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Acked-by: Bobby Eshleman <bobby.eshleman@bytedance.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/vmw_vsock/virtio_transport_common.c