Message ID | 20210420200144.4189597-1-eric.dumazet@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f5d7872a8b8a3176e65dc6f7f0705ce7e9a699e6 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] virtio-net: restrict build_skb() use to some arches | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | success | CCed 7 of 7 maintainers |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | fail | Errors and warnings before: 6 this patch: 6 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 8 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Tue, 20 Apr 2021 13:01:44 -0700 you wrote: > From: Eric Dumazet <edumazet@google.com> > > build_skb() is supposed to be followed by > skb_reserve(skb, NET_IP_ALIGN), so that IP headers are word-aligned. > (Best practice is to reserve NET_IP_ALIGN+NET_SKB_PAD, but the NET_SKB_PAD > part is only a performance optimization if tunnel encaps are added.) > > [...] Here is the summary with links: - [net-next] virtio-net: restrict build_skb() use to some arches https://git.kernel.org/netdev/net-next/c/f5d7872a8b8a You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
在 2021/4/21 上午4:01, Eric Dumazet 写道: > From: Eric Dumazet <edumazet@google.com> > > build_skb() is supposed to be followed by > skb_reserve(skb, NET_IP_ALIGN), so that IP headers are word-aligned. > (Best practice is to reserve NET_IP_ALIGN+NET_SKB_PAD, but the NET_SKB_PAD > part is only a performance optimization if tunnel encaps are added.) > > Unfortunately virtio_net has not provisioned this reserve. > We can only use build_skb() for arches where NET_IP_ALIGN == 0 > > We might refine this later, with enough testing. > > Fixes: fb32856b16ad ("virtio-net: page_to_skb() use build_skb when there's sufficient tailroom") > Signed-off-by: Eric Dumazet <edumazet@google.com> > Reported-by: Guenter Roeck <linux@roeck-us.net> > Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > Cc: Jason Wang <jasowang@redhat.com> > Cc: "Michael S. Tsirkin" <mst@redhat.com> > Cc: virtualization@lists.linux-foundation.org Acked-by: Jason Wang <jasowang@redhat.com> > --- > drivers/net/virtio_net.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 2e28c04aa6351d2b4016f7d277ce104c4970069d..74d2d49264f3f3b7039be70331d4a44c53b8cc28 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -416,7 +416,7 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, > > shinfo_size = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); > > - if (len > GOOD_COPY_LEN && tailroom >= shinfo_size) { > + if (!NET_IP_ALIGN && len > GOOD_COPY_LEN && tailroom >= shinfo_size) { > skb = build_skb(p, truesize); > if (unlikely(!skb)) > return NULL;
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 2e28c04aa6351d2b4016f7d277ce104c4970069d..74d2d49264f3f3b7039be70331d4a44c53b8cc28 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -416,7 +416,7 @@ static struct sk_buff *page_to_skb(struct virtnet_info *vi, shinfo_size = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); - if (len > GOOD_COPY_LEN && tailroom >= shinfo_size) { + if (!NET_IP_ALIGN && len > GOOD_COPY_LEN && tailroom >= shinfo_size) { skb = build_skb(p, truesize); if (unlikely(!skb)) return NULL;