diff options
Diffstat (limited to 'net/xfrm/xfrm_output.c')
-rw-r--r-- | net/xfrm/xfrm_output.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 58d5a746b1c3..b1efdc8850a7 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c | |||
@@ -53,6 +53,10 @@ int xfrm_output(struct sk_buff *skb) | |||
53 | } | 53 | } |
54 | 54 | ||
55 | do { | 55 | do { |
56 | err = x->outer_mode->output(x, skb); | ||
57 | if (err) | ||
58 | goto error; | ||
59 | |||
56 | spin_lock_bh(&x->lock); | 60 | spin_lock_bh(&x->lock); |
57 | err = xfrm_state_check(x, skb); | 61 | err = xfrm_state_check(x, skb); |
58 | if (err) | 62 | if (err) |
@@ -64,10 +68,6 @@ int xfrm_output(struct sk_buff *skb) | |||
64 | xfrm_replay_notify(x, XFRM_REPLAY_UPDATE); | 68 | xfrm_replay_notify(x, XFRM_REPLAY_UPDATE); |
65 | } | 69 | } |
66 | 70 | ||
67 | err = x->outer_mode->output(x, skb); | ||
68 | if (err) | ||
69 | goto error; | ||
70 | |||
71 | x->curlft.bytes += skb->len; | 71 | x->curlft.bytes += skb->len; |
72 | x->curlft.packets++; | 72 | x->curlft.packets++; |
73 | 73 | ||