diff options
Diffstat (limited to 'net/xfrm')
-rw-r--r-- | net/xfrm/xfrm_output.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 09514449fe8a..d73003cb2c0e 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c | |||
@@ -57,8 +57,11 @@ static int xfrm_output_one(struct sk_buff *skb, int err) | |||
57 | 57 | ||
58 | if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { | 58 | if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { |
59 | XFRM_SKB_CB(skb)->seq = ++x->replay.oseq; | 59 | XFRM_SKB_CB(skb)->seq = ++x->replay.oseq; |
60 | if (unlikely(x->replay.oseq == 0)) | 60 | if (unlikely(x->replay.oseq == 0)) { |
61 | x->replay.oseq--; | ||
61 | xfrm_audit_state_replay_overflow(x, skb); | 62 | xfrm_audit_state_replay_overflow(x, skb); |
63 | goto error; | ||
64 | } | ||
62 | if (xfrm_aevent_is_on()) | 65 | if (xfrm_aevent_is_on()) |
63 | xfrm_replay_notify(x, XFRM_REPLAY_UPDATE); | 66 | xfrm_replay_notify(x, XFRM_REPLAY_UPDATE); |
64 | } | 67 | } |