aboutsummaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/xfrm/xfrm_input.c')
-rw-r--r--net/xfrm/xfrm_input.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index 684c0bc01e2c..d5635908587f 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -346,6 +346,12 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
346 346
347 skb->sp->xvec[skb->sp->len++] = x; 347 skb->sp->xvec[skb->sp->len++] = x;
348 348
349 skb_dst_force(skb);
350 if (!skb_dst(skb)) {
351 XFRM_INC_STATS(net, LINUX_MIB_XFRMINERROR);
352 goto drop;
353 }
354
349lock: 355lock:
350 spin_lock(&x->lock); 356 spin_lock(&x->lock);
351 357
@@ -385,7 +391,6 @@ lock:
385 XFRM_SKB_CB(skb)->seq.input.low = seq; 391 XFRM_SKB_CB(skb)->seq.input.low = seq;
386 XFRM_SKB_CB(skb)->seq.input.hi = seq_hi; 392 XFRM_SKB_CB(skb)->seq.input.hi = seq_hi;
387 393
388 skb_dst_force(skb);
389 dev_hold(skb->dev); 394 dev_hold(skb->dev);
390 395
391 if (crypto_done) 396 if (crypto_done)