]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
vsock/virtio: fix MSG_ZEROCOPY pinned-pages accounting
authorStefano Garzarella <sgarzare@redhat.com>
Mon, 20 Apr 2026 13:20:51 +0000 (15:20 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 23 Apr 2026 11:03:21 +0000 (13:03 +0200)
commit1cb36e252211506f51095fe7ced8286cc77b4c80
treec615dbd5ed39ecf5cfaa8ad5947fb82f63a7a7b8
parent42ea37b07742dc2d70aba6da13e104b911db0c8a
vsock/virtio: fix MSG_ZEROCOPY pinned-pages accounting

virtio_transport_init_zcopy_skb() uses iter->count as the size argument
for msg_zerocopy_realloc(), which in turn passes it to
mm_account_pinned_pages() for RLIMIT_MEMLOCK accounting. However, this
function is called after virtio_transport_fill_skb() has already consumed
the iterator via __zerocopy_sg_from_iter(), so on the last skb, iter->count
will be 0, skipping the RLIMIT_MEMLOCK enforcement.

Pass pkt_len (the total bytes being sent) as an explicit parameter to
virtio_transport_init_zcopy_skb() instead of reading the already-consumed
iter->count.

This matches TCP and UDP, which both call msg_zerocopy_realloc() with
the original message size.

Fixes: 581512a6dc93 ("vsock/virtio: MSG_ZEROCOPY flag support")
Reported-by: Yiming Qian <yimingqian591@gmail.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>
Link: https://patch.msgid.link/20260420132051.217589-1-sgarzare@redhat.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/vmw_vsock/virtio_transport_common.c