diff options
-rw-r--r-- | net/xfrm/xfrm_output.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index d73003cb2c0e..c1ba63efd7cb 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c | |||
@@ -43,17 +43,23 @@ static int xfrm_output_one(struct sk_buff *skb, int err) | |||
43 | 43 | ||
44 | do { | 44 | do { |
45 | err = xfrm_state_check_space(x, skb); | 45 | err = xfrm_state_check_space(x, skb); |
46 | if (err) | 46 | if (err) { |
47 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTERROR); | ||
47 | goto error_nolock; | 48 | goto error_nolock; |
49 | } | ||
48 | 50 | ||
49 | err = x->outer_mode->output(x, skb); | 51 | err = x->outer_mode->output(x, skb); |
50 | if (err) | 52 | if (err) { |
53 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTSTATEMODEERROR); | ||
51 | goto error_nolock; | 54 | goto error_nolock; |
55 | } | ||
52 | 56 | ||
53 | spin_lock_bh(&x->lock); | 57 | spin_lock_bh(&x->lock); |
54 | err = xfrm_state_check_expire(x); | 58 | err = xfrm_state_check_expire(x); |
55 | if (err) | 59 | if (err) { |
60 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTSTATEEXPIRED); | ||
56 | goto error; | 61 | goto error; |
62 | } | ||
57 | 63 | ||
58 | if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { | 64 | if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { |
59 | XFRM_SKB_CB(skb)->seq = ++x->replay.oseq; | 65 | XFRM_SKB_CB(skb)->seq = ++x->replay.oseq; |