[IPSEC]: Fix tunnel error handling in ipcomp6
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 27 Mar 2006 01:37:54 +0000 (17:37 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Mar 2006 01:37:54 +0000 (17:37 -0800)
commit6abaaaae6d5ed52422c8caf65f3cdbb95579bb58
treed35a7ca08d9ced7c7204197d2dd532bd3c8971fe
parent64bc0430ee78c03c5c4ce549e217bb74bff7ea5d
[IPSEC]: Fix tunnel error handling in ipcomp6

The error handling in ipcomp6_tunnel_create is broken in two ways:

1) If we fail to allocate an SPI (this should never happen in practice
since there are plenty of 32-bit SPI values for us to use), we will
still go ahead and create the SA.

2) When xfrm_init_state fails, we first of all may trigger the BUG_TRAP
in __xfrm_state_destroy because we didn't set the state to DEAD.  More
importantly we end up returning the freed state as if we succeeded!

This patch fixes them both.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ipcomp6.c