Re: [PATCH net v2 2/3] vsock: Fix sk_error_queue memory leak
On Thu, Nov 07, 2024 at 09:46:13PM +0100, Michal Luczaj wrote: Kernel queues MSG_ZEROCOPY completion notifications on the error queue. Where they remain, until explicitly recv()ed. To prevent memory leaks, clean up the queue when the socket is destroyed. unreferenced object 0x8881028beb00 (size 224): comm "vsock_test", pid 1218, jiffies 4294694897 hex dump (first 32 bytes): 90 b0 21 17 81 88 ff ff 90 b0 21 17 81 88 ff ff ..!...!. 00 00 00 00 00 00 00 00 00 b0 21 17 81 88 ff ff ..!. backtrace (crc 6c7031ca): [] kmem_cache_alloc_node_noprof+0x2f7/0x370 [] __alloc_skb+0x132/0x180 [] sock_omalloc+0x4b/0x80 [] msg_zerocopy_realloc+0x9e/0x240 [] virtio_transport_send_pkt_info+0x412/0x4c0 [] virtio_transport_stream_enqueue+0x43/0x50 [] vsock_connectible_sendmsg+0x373/0x450 [] sys_sendmsg+0x365/0x3a0 [] ___sys_sendmsg+0x84/0xd0 [] __sys_sendmsg+0x47/0x80 [] do_syscall_64+0x93/0x180 [] entry_SYSCALL_64_after_hwframe+0x76/0x7e Fixes: 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support") Signed-off-by: Michal Luczaj --- net/vmw_vsock/af_vsock.c | 3 +++ 1 file changed, 3 insertions(+) Reviewed-by: Stefano Garzarella diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 35681adedd9aaec3565495158f5342b8aa76c9bc..dfd29160fe11c4675f872c1ee123d65b2da0dae6 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -836,6 +836,9 @@ static void vsock_sk_destruct(struct sock *sk) { struct vsock_sock *vsk = vsock_sk(sk); + /* Flush MSG_ZEROCOPY leftovers. */ + __skb_queue_purge(&sk->sk_error_queue); + vsock_deassign_transport(vsk); /* When clearing these addresses, there's no need to set the family and -- 2.46.2
Re: [PATCH net 4/4] virtio/vsock: Put vsock_connected_sockets_vsk() to use
On Thu, Nov 07, 2024 at 10:04:03PM +0100, Michal Luczaj wrote: On 11/7/24 11:22, Stefano Garzarella wrote: On Wed, Nov 06, 2024 at 06:51:21PM +0100, Michal Luczaj wrote: Macro vsock_connected_sockets_vsk() has been unused since its introduction. Instead of removing it, utilise it in vsock_insert_connected() where it's been open-coded. No functional change intended. Fixes: d021c344051a ("VSOCK: Introduce VM Sockets") This is not a fix, so please remove the Fixes tag, we don't need to backport this patch in stable branches. Also in this case this is not related at all with virtio transport, so please remove `virtio` from the commit title. In addition maybe you can remove this patch from this series, and send it to net-next. ... Right, I get it. Just to be clear: are such small (and non-functional) cleanups welcomed coming by themselves? Good question, in this case I think it's a good cleanup, since we have the function already there, why not use it. So I don't see a problem with that. If you find others cleanups, it's better to pack in a single series, otherwise let's send just it. Thanks for the fixes and cleanups! Stefano