X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fipv6%2Fxfrm6_state.c;h=c72cf83d465fae7c2f455a35ff692ea0293e3df4;hb=a5a3d8204ccf9e1ecbfa2bffe4785290e705a4f4;hp=d98b92d15ea6a8f53788c967c2a291d09185ad4e;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/net/ipv6/xfrm6_state.c b/net/ipv6/xfrm6_state.c index d98b92d15..c72cf83d4 100644 --- a/net/ipv6/xfrm6_state.c +++ b/net/ipv6/xfrm6_state.c @@ -16,7 +16,7 @@ #include #include -static struct xfrm_state_afinfo xfrm6_state_afinfo; +extern struct xfrm_state_afinfo xfrm6_state_afinfo; static void __xfrm6_init_tempsel(struct xfrm_state *x, struct flowi *fl, @@ -81,8 +81,11 @@ __xfrm6_find_acq(u8 mode, u32 reqid, u8 proto, proto == x->id.proto && !ipv6_addr_cmp((struct in6_addr *)saddr, (struct in6_addr *)x->props.saddr.a6) && reqid == x->props.reqid && - x->km.state == XFRM_STATE_ACQ && - !x->id.spi) { + x->km.state == XFRM_STATE_ACQ) { + if (!x0) + x0 = x; + if (x->id.spi) + continue; x0 = x; break; }