diff options
author | David S. Miller <davem@davemloft.net> | 2014-07-30 23:05:54 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-07-30 23:05:54 -0400 |
commit | ccda4a77f3a5976e4f064eddce11faec54d1f1e0 (patch) | |
tree | b704a24839eaf1bec5c9f944abbd294e0eb8573d /net/ipv6 | |
parent | 7fc527f96bc57a5cb87bf78e8535bb85ad372995 (diff) | |
parent | 1759389e8af46d724220785bf710b7bdbebdfa48 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next
Steffen Klassert says:
====================
pull request (net-next): ipsec-next 2014-07-30
This is the last pull request for ipsec-next before I'll be
off for two weeks starting on friday. David, can you please
take urgent ipsec patches directly into net/net-next during
this time?
1) Error handling simplifications for vti and vti6.
From Mathias Krause.
2) Remove a duplicate semicolon after a return statement.
From Christoph Paasch.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/ip6_vti.c | 51 |
1 files changed, 20 insertions, 31 deletions
diff --git a/net/ipv6/ip6_vti.c b/net/ipv6/ip6_vti.c index 17ee4fc32dfe..7f52fd9fa7b0 100644 --- a/net/ipv6/ip6_vti.c +++ b/net/ipv6/ip6_vti.c | |||
@@ -1089,36 +1089,26 @@ static struct xfrm6_protocol vti_ipcomp6_protocol __read_mostly = { | |||
1089 | **/ | 1089 | **/ |
1090 | static int __init vti6_tunnel_init(void) | 1090 | static int __init vti6_tunnel_init(void) |
1091 | { | 1091 | { |
1092 | int err; | 1092 | const char *msg; |
1093 | int err; | ||
1093 | 1094 | ||
1095 | msg = "tunnel device"; | ||
1094 | err = register_pernet_device(&vti6_net_ops); | 1096 | err = register_pernet_device(&vti6_net_ops); |
1095 | if (err < 0) | 1097 | if (err < 0) |
1096 | goto out_pernet; | 1098 | goto pernet_dev_failed; |
1097 | 1099 | ||
1100 | msg = "tunnel protocols"; | ||
1098 | err = xfrm6_protocol_register(&vti_esp6_protocol, IPPROTO_ESP); | 1101 | err = xfrm6_protocol_register(&vti_esp6_protocol, IPPROTO_ESP); |
1099 | if (err < 0) { | 1102 | if (err < 0) |
1100 | pr_err("%s: can't register vti6 protocol\n", __func__); | 1103 | goto xfrm_proto_esp_failed; |
1101 | |||
1102 | goto out; | ||
1103 | } | ||
1104 | |||
1105 | err = xfrm6_protocol_register(&vti_ah6_protocol, IPPROTO_AH); | 1104 | err = xfrm6_protocol_register(&vti_ah6_protocol, IPPROTO_AH); |
1106 | if (err < 0) { | 1105 | if (err < 0) |
1107 | xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); | 1106 | goto xfrm_proto_ah_failed; |
1108 | pr_err("%s: can't register vti6 protocol\n", __func__); | ||
1109 | |||
1110 | goto out; | ||
1111 | } | ||
1112 | |||
1113 | err = xfrm6_protocol_register(&vti_ipcomp6_protocol, IPPROTO_COMP); | 1107 | err = xfrm6_protocol_register(&vti_ipcomp6_protocol, IPPROTO_COMP); |
1114 | if (err < 0) { | 1108 | if (err < 0) |
1115 | xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH); | 1109 | goto xfrm_proto_comp_failed; |
1116 | xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); | ||
1117 | pr_err("%s: can't register vti6 protocol\n", __func__); | ||
1118 | |||
1119 | goto out; | ||
1120 | } | ||
1121 | 1110 | ||
1111 | msg = "netlink interface"; | ||
1122 | err = rtnl_link_register(&vti6_link_ops); | 1112 | err = rtnl_link_register(&vti6_link_ops); |
1123 | if (err < 0) | 1113 | if (err < 0) |
1124 | goto rtnl_link_failed; | 1114 | goto rtnl_link_failed; |
@@ -1127,11 +1117,14 @@ static int __init vti6_tunnel_init(void) | |||
1127 | 1117 | ||
1128 | rtnl_link_failed: | 1118 | rtnl_link_failed: |
1129 | xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP); | 1119 | xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP); |
1120 | xfrm_proto_comp_failed: | ||
1130 | xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH); | 1121 | xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH); |
1122 | xfrm_proto_ah_failed: | ||
1131 | xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); | 1123 | xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); |
1132 | out: | 1124 | xfrm_proto_esp_failed: |
1133 | unregister_pernet_device(&vti6_net_ops); | 1125 | unregister_pernet_device(&vti6_net_ops); |
1134 | out_pernet: | 1126 | pernet_dev_failed: |
1127 | pr_err("vti6 init: failed to register %s\n", msg); | ||
1135 | return err; | 1128 | return err; |
1136 | } | 1129 | } |
1137 | 1130 | ||
@@ -1141,13 +1134,9 @@ out_pernet: | |||
1141 | static void __exit vti6_tunnel_cleanup(void) | 1134 | static void __exit vti6_tunnel_cleanup(void) |
1142 | { | 1135 | { |
1143 | rtnl_link_unregister(&vti6_link_ops); | 1136 | rtnl_link_unregister(&vti6_link_ops); |
1144 | if (xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP)) | 1137 | xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP); |
1145 | pr_info("%s: can't deregister protocol\n", __func__); | 1138 | xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH); |
1146 | if (xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH)) | 1139 | xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); |
1147 | pr_info("%s: can't deregister protocol\n", __func__); | ||
1148 | if (xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP)) | ||
1149 | pr_info("%s: can't deregister protocol\n", __func__); | ||
1150 | |||
1151 | unregister_pernet_device(&vti6_net_ops); | 1140 | unregister_pernet_device(&vti6_net_ops); |
1152 | } | 1141 | } |
1153 | 1142 | ||