l2tp: don't register sessions in l2tp_session_create()
[pandora-kernel.git] / net / l2tp / l2tp_eth.c
index ec1148c..6a8f972 100644 (file)
@@ -194,6 +194,13 @@ static int l2tp_eth_create(struct net *net, struct l2tp_tunnel *tunnel,
                goto out;
        }
 
+       l2tp_session_inc_refcount(session);
+       rc = l2tp_session_register(session, tunnel);
+       if (rc < 0) {
+               kfree(session);
+               goto out;
+       }
+
        dev = alloc_netdev(sizeof(*priv), name, l2tp_eth_dev_setup);
        if (!dev) {
                rc = -ENOMEM;
@@ -227,6 +234,7 @@ static int l2tp_eth_create(struct net *net, struct l2tp_tunnel *tunnel,
        __module_get(THIS_MODULE);
        /* Must be done after register_netdev() */
        strlcpy(session->ifname, dev->name, IFNAMSIZ);
+       l2tp_session_dec_refcount(session);
 
        dev_hold(dev);
 
@@ -237,6 +245,7 @@ out_del_dev:
        spriv->dev = NULL;
 out_del_session:
        l2tp_session_delete(session);
+       l2tp_session_dec_refcount(session);
 out:
        return rc;
 }