]> git.itanic.dy.fi Git - linux-stable/commit
vsock/virtio: free queued packets when closing socket
authorStefano Garzarella <sgarzare@redhat.com>
Tue, 20 Apr 2021 11:07:27 +0000 (13:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 14 May 2021 08:50:14 +0000 (10:50 +0200)
commit27691665145e74a45034a9dccf1150cf1894763a
tree4ad539530fdbba8137d380b43909f05f2298f1e9
parent2c18bc9f35c416160d421a56970f2b61a0a33eb3
vsock/virtio: free queued packets when closing socket

[ Upstream commit 8432b8114957235f42e070a16118a7f750de9d39 ]

As reported by syzbot [1], there is a memory leak while closing the
socket. We partially solved this issue with commit ac03046ece2b
("vsock/virtio: free packets during the socket release"), but we
forgot to drain the RX queue when the socket is definitely closed by
the scheduled work.

To avoid future issues, let's use the new virtio_transport_remove_sock()
to drain the RX queue before removing the socket from the af_vsock lists
calling vsock_remove_sock().

[1] https://syzkaller.appspot.com/bug?extid=24452624fc4c571eedd9

Fixes: ac03046ece2b ("vsock/virtio: free packets during the socket release")
Reported-and-tested-by: syzbot+24452624fc4c571eedd9@syzkaller.appspotmail.com
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/vmw_vsock/virtio_transport_common.c