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 | |
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')
-rw-r--r-- | net/ipv4/ip_vti.c | 54 | ||||
-rw-r--r-- | net/ipv4/xfrm4_protocol.c | 2 | ||||
-rw-r--r-- | net/ipv6/ip6_vti.c | 51 |
3 files changed, 42 insertions, 65 deletions
diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c index b8960f3527f3..e453cb724a95 100644 --- a/net/ipv4/ip_vti.c +++ b/net/ipv4/ip_vti.c | |||
@@ -534,40 +534,28 @@ static struct rtnl_link_ops vti_link_ops __read_mostly = { | |||
534 | 534 | ||
535 | static int __init vti_init(void) | 535 | static int __init vti_init(void) |
536 | { | 536 | { |
537 | const char *msg; | ||
537 | int err; | 538 | int err; |
538 | 539 | ||
539 | pr_info("IPv4 over IPSec tunneling driver\n"); | 540 | pr_info("IPv4 over IPsec tunneling driver\n"); |
540 | 541 | ||
542 | msg = "tunnel device"; | ||
541 | err = register_pernet_device(&vti_net_ops); | 543 | err = register_pernet_device(&vti_net_ops); |
542 | if (err < 0) | 544 | if (err < 0) |
543 | return err; | 545 | goto pernet_dev_failed; |
544 | err = xfrm4_protocol_register(&vti_esp4_protocol, IPPROTO_ESP); | ||
545 | if (err < 0) { | ||
546 | unregister_pernet_device(&vti_net_ops); | ||
547 | pr_info("vti init: can't register tunnel\n"); | ||
548 | |||
549 | return err; | ||
550 | } | ||
551 | 546 | ||
547 | msg = "tunnel protocols"; | ||
548 | err = xfrm4_protocol_register(&vti_esp4_protocol, IPPROTO_ESP); | ||
549 | if (err < 0) | ||
550 | goto xfrm_proto_esp_failed; | ||
552 | err = xfrm4_protocol_register(&vti_ah4_protocol, IPPROTO_AH); | 551 | err = xfrm4_protocol_register(&vti_ah4_protocol, IPPROTO_AH); |
553 | if (err < 0) { | 552 | if (err < 0) |
554 | xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP); | 553 | goto xfrm_proto_ah_failed; |
555 | unregister_pernet_device(&vti_net_ops); | ||
556 | pr_info("vti init: can't register tunnel\n"); | ||
557 | |||
558 | return err; | ||
559 | } | ||
560 | |||
561 | err = xfrm4_protocol_register(&vti_ipcomp4_protocol, IPPROTO_COMP); | 554 | err = xfrm4_protocol_register(&vti_ipcomp4_protocol, IPPROTO_COMP); |
562 | if (err < 0) { | 555 | if (err < 0) |
563 | xfrm4_protocol_deregister(&vti_ah4_protocol, IPPROTO_AH); | 556 | goto xfrm_proto_comp_failed; |
564 | xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP); | ||
565 | unregister_pernet_device(&vti_net_ops); | ||
566 | pr_info("vti init: can't register tunnel\n"); | ||
567 | |||
568 | return err; | ||
569 | } | ||
570 | 557 | ||
558 | msg = "netlink interface"; | ||
571 | err = rtnl_link_register(&vti_link_ops); | 559 | err = rtnl_link_register(&vti_link_ops); |
572 | if (err < 0) | 560 | if (err < 0) |
573 | goto rtnl_link_failed; | 561 | goto rtnl_link_failed; |
@@ -576,23 +564,23 @@ static int __init vti_init(void) | |||
576 | 564 | ||
577 | rtnl_link_failed: | 565 | rtnl_link_failed: |
578 | xfrm4_protocol_deregister(&vti_ipcomp4_protocol, IPPROTO_COMP); | 566 | xfrm4_protocol_deregister(&vti_ipcomp4_protocol, IPPROTO_COMP); |
567 | xfrm_proto_comp_failed: | ||
579 | xfrm4_protocol_deregister(&vti_ah4_protocol, IPPROTO_AH); | 568 | xfrm4_protocol_deregister(&vti_ah4_protocol, IPPROTO_AH); |
569 | xfrm_proto_ah_failed: | ||
580 | xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP); | 570 | xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP); |
571 | xfrm_proto_esp_failed: | ||
581 | unregister_pernet_device(&vti_net_ops); | 572 | unregister_pernet_device(&vti_net_ops); |
573 | pernet_dev_failed: | ||
574 | pr_err("vti init: failed to register %s\n", msg); | ||
582 | return err; | 575 | return err; |
583 | } | 576 | } |
584 | 577 | ||
585 | static void __exit vti_fini(void) | 578 | static void __exit vti_fini(void) |
586 | { | 579 | { |
587 | rtnl_link_unregister(&vti_link_ops); | 580 | rtnl_link_unregister(&vti_link_ops); |
588 | if (xfrm4_protocol_deregister(&vti_ipcomp4_protocol, IPPROTO_COMP)) | 581 | xfrm4_protocol_deregister(&vti_ipcomp4_protocol, IPPROTO_COMP); |
589 | pr_info("vti close: can't deregister tunnel\n"); | 582 | xfrm4_protocol_deregister(&vti_ah4_protocol, IPPROTO_AH); |
590 | if (xfrm4_protocol_deregister(&vti_ah4_protocol, IPPROTO_AH)) | 583 | xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP); |
591 | pr_info("vti close: can't deregister tunnel\n"); | ||
592 | if (xfrm4_protocol_deregister(&vti_esp4_protocol, IPPROTO_ESP)) | ||
593 | pr_info("vti close: can't deregister tunnel\n"); | ||
594 | |||
595 | |||
596 | unregister_pernet_device(&vti_net_ops); | 584 | unregister_pernet_device(&vti_net_ops); |
597 | } | 585 | } |
598 | 586 | ||
diff --git a/net/ipv4/xfrm4_protocol.c b/net/ipv4/xfrm4_protocol.c index a2ce0101eaac..dccefa9d84cf 100644 --- a/net/ipv4/xfrm4_protocol.c +++ b/net/ipv4/xfrm4_protocol.c | |||
@@ -124,7 +124,7 @@ static int xfrm4_ah_rcv(struct sk_buff *skb) | |||
124 | 124 | ||
125 | for_each_protocol_rcu(ah4_handlers, handler) | 125 | for_each_protocol_rcu(ah4_handlers, handler) |
126 | if ((ret = handler->handler(skb)) != -EINVAL) | 126 | if ((ret = handler->handler(skb)) != -EINVAL) |
127 | return ret;; | 127 | return ret; |
128 | 128 | ||
129 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); | 129 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); |
130 | 130 | ||
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 | ||