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/ipv4 | |
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/ipv4')
-rw-r--r-- | net/ipv4/ip_vti.c | 54 | ||||
-rw-r--r-- | net/ipv4/xfrm4_protocol.c | 2 |
2 files changed, 22 insertions, 34 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 | ||