From 10ec610805a193d433c8e598bf29049641f5a639 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Tue, 13 Nov 2007 21:39:38 -0800 Subject: [PATCH] --- yaml --- r: 78099 b: refs/heads/master c: a2deb6d26f16ed7bf787dbd6a58c5d7be47d8db3 h: refs/heads/master i: 78097: 951292e55a2022fb8012baf0d81112e0a2766b7c 78095: 02301bed9ffd60e47c8d58ff9d46c1971ff38d89 v: v3 --- [refs] | 2 +- trunk/net/ipv6/xfrm6_mode_ro.c | 3 +++ trunk/net/xfrm/xfrm_output.c | 8 ++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index ffc725a2db1d..d73537558998 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e40b3286158565909692e5914ea4a11bdbcc68c8 +refs/heads/master: a2deb6d26f16ed7bf787dbd6a58c5d7be47d8db3 diff --git a/trunk/net/ipv6/xfrm6_mode_ro.c b/trunk/net/ipv6/xfrm6_mode_ro.c index a7bc8c62317a..4a01cb3c370b 100644 --- a/trunk/net/ipv6/xfrm6_mode_ro.c +++ b/trunk/net/ipv6/xfrm6_mode_ro.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,9 @@ static int xfrm6_ro_output(struct xfrm_state *x, struct sk_buff *skb) __skb_pull(skb, hdr_len); memmove(ipv6_hdr(skb), iph, hdr_len); + spin_lock_bh(&x->lock); x->lastused = get_seconds(); + spin_unlock_bh(&x->lock); return 0; } diff --git a/trunk/net/xfrm/xfrm_output.c b/trunk/net/xfrm/xfrm_output.c index 58d5a746b1c3..b1efdc8850a7 100644 --- a/trunk/net/xfrm/xfrm_output.c +++ b/trunk/net/xfrm/xfrm_output.c @@ -53,6 +53,10 @@ int xfrm_output(struct sk_buff *skb) } do { + err = x->outer_mode->output(x, skb); + if (err) + goto error; + spin_lock_bh(&x->lock); err = xfrm_state_check(x, skb); if (err) @@ -64,10 +68,6 @@ int xfrm_output(struct sk_buff *skb) xfrm_replay_notify(x, XFRM_REPLAY_UPDATE); } - err = x->outer_mode->output(x, skb); - if (err) - goto error; - x->curlft.bytes += skb->len; x->curlft.packets++;