diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/tun.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 14fe94098180..3ae539374f6b 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c | |||
@@ -1660,7 +1660,6 @@ static int tun_xdp_act(struct tun_struct *tun, struct bpf_prog *xdp_prog, | |||
1660 | switch (act) { | 1660 | switch (act) { |
1661 | case XDP_REDIRECT: | 1661 | case XDP_REDIRECT: |
1662 | err = xdp_do_redirect(tun->dev, xdp, xdp_prog); | 1662 | err = xdp_do_redirect(tun->dev, xdp, xdp_prog); |
1663 | xdp_do_flush_map(); | ||
1664 | if (err) | 1663 | if (err) |
1665 | return err; | 1664 | return err; |
1666 | break; | 1665 | break; |
@@ -1749,6 +1748,8 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, | |||
1749 | err = tun_xdp_act(tun, xdp_prog, &xdp, act); | 1748 | err = tun_xdp_act(tun, xdp_prog, &xdp, act); |
1750 | if (err < 0) | 1749 | if (err < 0) |
1751 | goto err_xdp; | 1750 | goto err_xdp; |
1751 | if (err == XDP_REDIRECT) | ||
1752 | xdp_do_flush_map(); | ||
1752 | if (err != XDP_PASS) | 1753 | if (err != XDP_PASS) |
1753 | goto out; | 1754 | goto out; |
1754 | 1755 | ||