diff options
Diffstat (limited to 'net/xfrm/xfrm_input.c')
| -rw-r--r-- | net/xfrm/xfrm_input.c | 7 | 
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)  		skb->sp->xvec[skb->sp->len++] = x; +		skb_dst_force(skb); +		if (!skb_dst(skb)) { +			XFRM_INC_STATS(net, LINUX_MIB_XFRMINERROR); +			goto drop; +		} +  lock:  		spin_lock(&x->lock); @@ -385,7 +391,6 @@ lock:  		XFRM_SKB_CB(skb)->seq.input.low = seq;  		XFRM_SKB_CB(skb)->seq.input.hi = seq_hi; -		skb_dst_force(skb);  		dev_hold(skb->dev);  		if (crypto_done)  |