diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2022-08-16 08:50:29 +0200 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2022-08-16 08:50:29 +0200 |
commit | d6b3590c6de67ab0235d01d79359781171679777 (patch) | |
tree | 265fbd1731704a81643f7c05ce08cbfb6cf353aa | |
parent | d604bdbca7610fa5f1bf37050c53cb7dcf489f18 (diff) | |
download | linux-stk-nft-bulk-v5.15-3.tar.gz |
xfrm: Do dev_hold only on real async resumption.nft-bulk-v5.15-3
-rw-r--r-- | net/xfrm/xfrm_input.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index 40892fb4755b04..03cb938aeea6c0 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c @@ -562,8 +562,6 @@ lock: XFRM_SKB_CB(skb)->seq.input.low = seq; XFRM_SKB_CB(skb)->seq.input.hi = seq_hi; - dev_hold(skb->dev); - if (bulk) return 0; @@ -572,11 +570,11 @@ lock: else nexthdr = x->type->input(x, skb); - if (nexthdr == -EINPROGRESS) + if (nexthdr == -EINPROGRESS) { + dev_hold(skb->dev); return nexthdr; + } resume: - dev_put(skb->dev); - spin_lock(&x->lock); if (nexthdr < 0) { if (nexthdr == -EBADMSG) { @@ -870,6 +868,7 @@ EXPORT_SYMBOL(xfrm_input); int xfrm_input_resume(struct sk_buff *skb, int nexthdr) { + dev_put(skb->dev); return xfrm_input(skb, nexthdr, 0, -1); } EXPORT_SYMBOL(xfrm_input_resume); |