xfrm6_tunnel: join error paths using goto

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Ilpo Järvinen 2008-12-14 23:13:48 -08:00 committed by David S. Miller
parent 857a6e0a4d
commit 5ce1bbb97b
1 changed files with 16 additions and 17 deletions

View File

@ -345,24 +345,23 @@ static struct xfrm6_tunnel xfrm46_tunnel_handler = {
static int __init xfrm6_tunnel_init(void) static int __init xfrm6_tunnel_init(void)
{ {
if (xfrm_register_type(&xfrm6_tunnel_type, AF_INET6) < 0) if (xfrm_register_type(&xfrm6_tunnel_type, AF_INET6) < 0)
return -EAGAIN; goto err;
if (xfrm6_tunnel_register(&xfrm6_tunnel_handler, AF_INET6))
if (xfrm6_tunnel_register(&xfrm6_tunnel_handler, AF_INET6)) { goto unreg;
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6); if (xfrm6_tunnel_register(&xfrm46_tunnel_handler, AF_INET))
return -EAGAIN; goto dereg6;
} if (xfrm6_tunnel_spi_init() < 0)
if (xfrm6_tunnel_register(&xfrm46_tunnel_handler, AF_INET)) { goto dereg46;
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
return -EAGAIN;
}
if (xfrm6_tunnel_spi_init() < 0) {
xfrm6_tunnel_deregister(&xfrm46_tunnel_handler, AF_INET);
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
return -EAGAIN;
}
return 0; return 0;
dereg46:
xfrm6_tunnel_deregister(&xfrm46_tunnel_handler, AF_INET);
dereg6:
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
unreg:
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
err:
return -EAGAIN;
} }
static void __exit xfrm6_tunnel_fini(void) static void __exit xfrm6_tunnel_fini(void)