From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 279FA3B19A0 for ; Mon, 20 Apr 2026 18:34:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776710070; cv=none; b=pDRtHAbclmLRjp30J8FXKIRTuYPsnLeRU0Oa3LYwFnWb/+HpbEw3W0k+5F9ANq+Ip7b83DirsdYJAeoSokJmgEvmIqHmRQHTIQWa/Ef1UjZhxdCODFZAnWXwD1Frq8P1YTdXh3DxJt47cIsBGxhEOgf3PrSjT5qJ6rZJ6PejVmc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776710070; c=relaxed/simple; bh=ienUfESzt6vNzLdl8pNwfDx7dxAyw+aVjIBPr3f4Yec=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=G6M1Qol3Qy2T2wD0LbdYJVN3tmD6QDJezEAI8LyUCSeFqmCqWBeI0k84SMgXG580eLME5dnC1b/dysOwXMzxsbrcIHq2xSf7im3m8oR3UiyO0I44ygBBD8Tz1UknHTGrsvH81sBuKe3rZPQJKkpvkMSRd1dhCKFgls7jawhyJoc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FUKROWVE; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FUKROWVE" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-82fb2d0c5d1so897144b3a.0 for ; Mon, 20 Apr 2026 11:34:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776710068; x=1777314868; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=kqExjaso/aiD1XgkyqsZ6VooUNyCznnnKYPwy1DQRPE=; b=FUKROWVE9PkJqNZ8v1dPScvL7r2iebaRXT+GE74V3ahoVdLcfcDee2F++rXyxPAtKh VU9Xg11PdM7iw+Iy78jZNcs90e275ZiWfC6Hd5QSzUbCdCYmvDXw43lB1bPw1ZzTpPzb 2ySX1d4ouMRlX7qlbC72iBJT4c5i9fsYyYY6wUtBidGZI43Ehw8CzLSf9skn+demJaXH rrzKz75HXJ5DLRwbt2KgyuiEIEtisslfwzzz16QKHdRwToNP0gTp7dKVzVQGFg2lN7b9 ezm6yxsnwIoKqbKofe4soZDGT4T88Bdsz+Kw7LaGczIw5GdmPWU4Nq9y7mVW9AZQsQB/ muGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776710068; x=1777314868; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kqExjaso/aiD1XgkyqsZ6VooUNyCznnnKYPwy1DQRPE=; b=VZBP5pm9+NPO3g/60frzeprB0gtdmB/17Bqw9PcoUp1BjWLUybqbdXNKMfpf1bYI7h 3KCCHmpWXJtaqoi1O8iR0TBcyM27Y+CghPfacwAfdZRQ1bSkgqB6i/IAy8u1ndedw2AU 9Jd+3FLC5LmUsBbqNVM6hD9QyxxR4aeWeinym+gg7ED4m+Nwex3rNrQAN2xdF2sR4Zw1 o0yz0esnGkj8OoFdtIsZ/OBKwRECvGiZ44tnephkK4LnAjzVQEocE1pfTBjirdlVAiKb /blsrbcZt1slAJsXwhrj66VK6yhAHqDHqS/ImTkuQZPs/6lFEPYO7Xa64mbmyDIqoox/ PtSw== X-Forwarded-Encrypted: i=1; AFNElJ+8N7DNOS2lSCg6PGV6UHezGl5lqQ08gI856c489kvnssMxjuAhLXF2bRm3IPn+6pr3dTKVIT9V7Uw1USw=@vger.kernel.org X-Gm-Message-State: AOJu0YxqsD8/539x6mW8iOlqLuCifNJBQ5h5nrJi/Z3MpE9gEGYq5k8z 4/WUkM8pvBFKcW3Qho5FJ00n5IOX/2w8g1uL0Gev/qpJg107nypQXUCW X-Gm-Gg: AeBDieswro9mEh5aMMutiORNvavYDunEZidPCWe5pKDPb9GMLNq58G6AdRXTWKzGrCh 3eEG2qHcyjafm6DhUAIHbqwcRs+2nt6D2yUneaG4xC0KDSL0PmUnyAGCd7wqOrCl216A85tKF/j LzrTARaxjMLro6+KDGCcIv1yLpAGWSZ5kMAhszj9NRUNxIe7fonQBmDibeG8gVfO5rlzZhd0Esw x96oHtW8ATvs4Qkvs6m3DgPm+yJwMq5YhNBEGr+fLajH4wt2T/24K3VzS10AgnWVrYMCzkCCu/R +E38LbylQm1KX9SVAdF2a12BG/db5wvNJEZMumC+2/h8MyyjF/jWndACHBIuERhZgIunh1QN0+/ Y8AkNJ/LwvBZ7cfxWHgHC8NQLR12dL9HYoMp19Ix30x73wqmwMbzj99nNfI/khW1k1Wed5bRtoT qHtU9j2P4ViydAYSVRGKArN+HiTbIasjBoZJGA2myeS8Di/4QguwQUMQ== X-Received: by 2002:a05:6a00:4c82:b0:82f:7cb7:63c7 with SMTP id d2e1a72fcca58-82f8b384f1amr11355701b3a.11.1776710068332; Mon, 20 Apr 2026 11:34:28 -0700 (PDT) Received: from devvm29614.prn0.facebook.com ([2a03:2880:ff:2::]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d35acsm11798580b3a.15.2026.04.20.11.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 11:34:27 -0700 (PDT) Date: Mon, 20 Apr 2026 11:34:25 -0700 From: Bobby Eshleman To: Stefano Garzarella Cc: netdev@vger.kernel.org, Eric Dumazet , Simon Horman , kvm@vger.kernel.org, Arseniy Krasnov , "David S. Miller" , Paolo Abeni , Jakub Kicinski , "Michael S. Tsirkin" , Jason Wang , virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, Eugenio =?iso-8859-1?Q?P=E9rez?= , Xuan Zhuo , Stefan Hajnoczi , Yiming Qian Subject: Re: [PATCH net] vsock/virtio: fix MSG_ZEROCOPY pinned-pages accounting Message-ID: References: <20260420132051.217589-1-sgarzare@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260420132051.217589-1-sgarzare@redhat.com> On Mon, Apr 20, 2026 at 03:20:51PM +0200, Stefano Garzarella wrote: > From: Stefano Garzarella > > 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 > Signed-off-by: Stefano Garzarella > --- > net/vmw_vsock/virtio_transport_common.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c > index 0742091beae7..416d533f493d 100644 > --- a/net/vmw_vsock/virtio_transport_common.c > +++ b/net/vmw_vsock/virtio_transport_common.c > @@ -73,6 +73,7 @@ static bool virtio_transport_can_zcopy(const struct virtio_transport *t_ops, > static int virtio_transport_init_zcopy_skb(struct vsock_sock *vsk, > struct sk_buff *skb, > struct msghdr *msg, > + size_t pkt_len, > bool zerocopy) > { > struct ubuf_info *uarg; > @@ -81,12 +82,10 @@ static int virtio_transport_init_zcopy_skb(struct vsock_sock *vsk, > uarg = msg->msg_ubuf; > net_zcopy_get(uarg); > } else { > - struct iov_iter *iter = &msg->msg_iter; > struct ubuf_info_msgzc *uarg_zc; > > uarg = msg_zerocopy_realloc(sk_vsock(vsk), > - iter->count, > - NULL, false); > + pkt_len, NULL, false); > if (!uarg) > return -1; > > @@ -398,11 +397,17 @@ static int virtio_transport_send_pkt_info(struct vsock_sock *vsk, > * each iteration. If this is last skb for this buffer > * and MSG_ZEROCOPY mode is in use - we must allocate > * completion for the current syscall. > + * > + * Pass pkt_len because msg iter is already consumed > + * by virtio_transport_fill_skb(), so iter->count > + * can not be used for RLIMIT_MEMLOCK pinned-pages > + * accounting done by msg_zerocopy_realloc(). > */ > if (info->msg && info->msg->msg_flags & MSG_ZEROCOPY && > skb_len == rest_len && info->op == VIRTIO_VSOCK_OP_RW) { > if (virtio_transport_init_zcopy_skb(vsk, skb, > info->msg, > + pkt_len, > can_zcopy)) { > kfree_skb(skb); > ret = -ENOMEM; > -- > 2.53.0 > Reviewed-by: Bobby Eshleman