diff options
author | Paolo Abeni <pabeni@redhat.com> | 2021-04-09 13:04:37 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-04-11 16:39:28 -0700 |
commit | c75fb320d482a5ce6e522378d137fd2c3bf79225 (patch) | |
tree | 72238a58f381c016d1f32b1fe01bd833a6ae47e5 /drivers/net/veth.c | |
parent | 7dc85b599ae17fb705ffae1b7321ace4b3056aeb (diff) | |
download | linux-c75fb320d482a5ce6e522378d137fd2c3bf79225.tar.gz linux-c75fb320d482a5ce6e522378d137fd2c3bf79225.tar.bz2 linux-c75fb320d482a5ce6e522378d137fd2c3bf79225.zip |
veth: use skb_orphan_partial instead of skb_orphan
As described by commit 9c4c325252c5 ("skbuff: preserve sock
reference when scrubbing the skb."), orphaning a skb
in the TX path will cause OoO.
Let's use skb_orphan_partial() instead of skb_orphan(), so
that we keep the sk around for queue's selection sake and we
still avoid the problem fixed with commit 4bf9ffa0fb57 ("veth:
Orphan skb before GRO")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/veth.c')
-rw-r--r-- | drivers/net/veth.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 9e525646df1d..ce085659d55f 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -686,7 +686,7 @@ static struct sk_buff *veth_xdp_rcv_skb(struct veth_rq *rq, int mac_len, delta, off; struct xdp_buff xdp; - skb_orphan(skb); + skb_orphan_partial(skb); rcu_read_lock(); xdp_prog = rcu_dereference(rq->xdp_prog); |