From: Heng Qi Date: Sat, 14 Jan 2023 08:22:20 +0000 (+0800) Subject: virtio-net: disable the hole mechanism for xdp X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=484beac2ffc1d1dde5fde601deb28f3a82ac250e;p=linux.git virtio-net: disable the hole mechanism for xdp XDP core assumes that the frame_size of xdp_buff and the length of the frag are PAGE_SIZE. The hole may cause the processing of xdp to fail, so we disable the hole mechanism when xdp is set. Signed-off-by: Heng Qi Reviewed-by: Xuan Zhuo Acked-by: Jason Wang Signed-off-by: David S. Miller --- diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 7723b2a49d8ec..a3271d2c7c022 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1426,8 +1426,11 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, /* To avoid internal fragmentation, if there is very likely not * enough space for another buffer, add the remaining space to * the current buffer. + * XDP core assumes that frame_size of xdp_buff and the length + * of the frag are PAGE_SIZE, so we disable the hole mechanism. */ - len += hole; + if (!headroom) + len += hole; alloc_frag->offset += hole; }