aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-07-30 23:05:54 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-30 23:05:54 -0400
commitccda4a77f3a5976e4f064eddce11faec54d1f1e0 (patch)
treeb704a24839eaf1bec5c9f944abbd294e0eb8573d /net/ipv6
parent7fc527f96bc57a5cb87bf78e8535bb85ad372995 (diff)
parent1759389e8af46d724220785bf710b7bdbebdfa48 (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.c51
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 **/
1090static int __init vti6_tunnel_init(void) 1090static 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
1128rtnl_link_failed: 1118rtnl_link_failed:
1129 xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP); 1119 xfrm6_protocol_deregister(&vti_ipcomp6_protocol, IPPROTO_COMP);
1120xfrm_proto_comp_failed:
1130 xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH); 1121 xfrm6_protocol_deregister(&vti_ah6_protocol, IPPROTO_AH);
1122xfrm_proto_ah_failed:
1131 xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP); 1123 xfrm6_protocol_deregister(&vti_esp6_protocol, IPPROTO_ESP);
1132out: 1124xfrm_proto_esp_failed:
1133 unregister_pernet_device(&vti6_net_ops); 1125 unregister_pernet_device(&vti6_net_ops);
1134out_pernet: 1126pernet_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:
1141static void __exit vti6_tunnel_cleanup(void) 1134static 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