]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
virtio_net: get build_skb() buf by data ptr
authorXuan Zhuo <xuanzhuo@linux.alibaba.com>
Tue, 1 Jun 2021 06:40:00 +0000 (14:40 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Jun 2021 22:24:11 +0000 (15:24 -0700)
commit8fb7da9e990793299c89ed7a4281c235bfdd31f8
treebd0e3a84da1c9d71e7558a243de204e648a9df37
parent5c37711d9f27bdc83fd5980446be7f4aa2106230
virtio_net: get build_skb() buf by data ptr

In the case of merge, the page passed into page_to_skb() may be a head
page, not the page where the current data is located. So when trying to
get the buf where the data is located, we should get buf based on
headroom instead of offset.

This patch solves this problem. But if you don't use this patch, the
original code can also run, because if the page is not the page of the
current data, the calculated tailroom will be less than 0, and will not
enter the logic of build_skb() . The significance of this patch is to
modify this logical problem, allowing more situations to use
build_skb().

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/virtio_net.c