]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/sit.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus
[~andy/linux] / net / ipv6 / sit.c
index 10207cc8cc0e2d4da01f2e7d069d01988a38997a..b1eea811be48c1f73b3a6e727193a3a04435245e 100644 (file)
@@ -363,7 +363,6 @@ ipip6_tunnel_add_prl(struct ip_tunnel *t, struct ip_tunnel_prl *a, int chg)
                goto out;
        }
 
-       INIT_RCU_HEAD(&p->rcu_head);
        p->next = t->prl;
        p->addr = a->addr;
        p->flags = a->flags;
@@ -744,7 +743,7 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,
                        skb_dst(skb)->ops->update_pmtu(skb_dst(skb), mtu);
 
                if (skb->len > mtu) {
-                       icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, dev);
+                       icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
                        ip_rt_put(rt);
                        goto tx_error;
                }
@@ -1227,15 +1226,14 @@ static int __init sit_init(void)
 
        printk(KERN_INFO "IPv6 over IPv4 tunneling driver\n");
 
-       if (xfrm4_tunnel_register(&sit_handler, AF_INET6) < 0) {
-               printk(KERN_INFO "sit init: Can't add protocol\n");
-               return -EAGAIN;
-       }
-
        err = register_pernet_device(&sit_net_ops);
        if (err < 0)
-               xfrm4_tunnel_deregister(&sit_handler, AF_INET6);
-
+               return err;
+       err = xfrm4_tunnel_register(&sit_handler, AF_INET6);
+       if (err < 0) {
+               unregister_pernet_device(&sit_net_ops);
+               printk(KERN_INFO "sit init: Can't add protocol\n");
+       }
        return err;
 }