On Sat, Jun 28, 2025 at 8:48 AM Jakub Kicinski <k...@kernel.org> wrote: > > On Thu, 26 Jun 2025 10:14:45 +0800 Jason Wang wrote: > > --- a/drivers/vhost/net.c > > +++ b/drivers/vhost/net.c > > @@ -690,13 +690,13 @@ static int vhost_net_build_xdp(struct > > vhost_net_virtqueue *nvq, > > if (unlikely(!buf)) > > return -ENOMEM; > > > > - copied = copy_from_iter(buf, sock_hlen, from); > > - if (copied != sock_hlen) { > > + copied = copy_from_iter(buf + pad - sock_hlen, len, from); > > + if (copied != len) { > > ret = -EFAULT; > > goto err; > > } > > > > - gso = buf; > > + gso = buf + pad - sock_hlen; > > > > if (!sock_hlen) > > memset(buf, 0, pad); > > @@ -715,12 +715,8 @@ static int vhost_net_build_xdp(struct > > vhost_net_virtqueue *nvq, > > } > > } > > > > - len -= sock_hlen; > > we used to adjust @len here, now we don't.. > > > - copied = copy_from_iter(buf + pad, len, from); > > - if (copied != len) { > > - ret = -EFAULT; > > - goto err; > > - } > > + /* pad contains sock_hlen */ > > + memcpy(buf, buf + pad - sock_hlen, sock_hlen); > > > > xdp_init_buff(xdp, buflen, NULL); > > xdp_prepare_buff(xdp, buf, pad, len, true); > > .. yet we still use len as the packet size here.
Exactly, it should be len - sock_hlen here. Thanks > -- > pw-bot: cr >