From: Jason Wang <jasowang@redhat.com>
Date: Wed, 12 Sep 2018 11:17:01 +0800
Subject: tuntap: enable bh early during processing XDP
Patch-mainline: v4.20-rc1
Git-commit: 291aeb2b1dba0d0296673d994200824a7185585e
References: bsc#1109837
This patch move the bh enabling a little bit earlier, this will be
used for factoring out the core XDP logic of tuntap.
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/net/tun.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -1681,22 +1681,18 @@ static struct sk_buff *tun_build_skb(str
goto err_xdp;
}
}
+ rcu_read_unlock();
+ local_bh_enable();
skb = build_skb(buf, buflen);
- if (!skb) {
- rcu_read_unlock();
- local_bh_enable();
+ if (!skb)
return ERR_PTR(-ENOMEM);
- }
skb_reserve(skb, pad - delta);
skb_put(skb, len);
get_page(alloc_frag->page);
alloc_frag->offset += buflen;
- rcu_read_unlock();
- local_bh_enable();
-
return skb;
err_redirect: