]> err.no Git - linux-2.6/blobdiff - drivers/net/loopback.c
[POWERPC] CPM: Rename commproc to cpm1 and cpm2_common.c to cpm2.c
[linux-2.6] / drivers / net / loopback.c
index d6997aec45ddaec150f8dfa5e54812eb80f2faab..fa147cd5d68c07e2b8e434ffad5db9c55891b58d 100644 (file)
@@ -242,7 +242,7 @@ static void loopback_setup(struct net_device *dev)
                | NETIF_F_NO_CSUM
                | NETIF_F_HIGHDMA
                | NETIF_F_LLTX
-               | NETIF_F_NETNS_LOCAL,
+               | NETIF_F_NETNS_LOCAL;
        dev->ethtool_ops        = &loopback_ethtool_ops;
        dev->header_ops         = &eth_header_ops;
        dev->init = loopback_dev_init;
@@ -250,7 +250,7 @@ static void loopback_setup(struct net_device *dev)
 }
 
 /* Setup and register the loopback device. */
-static int loopback_net_init(struct net *net)
+static __net_init int loopback_net_init(struct net *net)
 {
        struct net_device *dev;
        int err;
@@ -265,27 +265,26 @@ static int loopback_net_init(struct net *net)
        if (err)
                goto out_free_netdev;
 
-       err = 0;
        net->loopback_dev = dev;
+       return 0;
 
-out:
-       if (err)
-               panic("loopback: Failed to register netdevice: %d\n", err);
-       return err;
 
 out_free_netdev:
        free_netdev(dev);
-       goto out;
+out:
+       if (net == &init_net)
+               panic("loopback: Failed to register netdevice: %d\n", err);
+       return err;
 }
 
-static void loopback_net_exit(struct net *net)
+static __net_exit void loopback_net_exit(struct net *net)
 {
        struct net_device *dev = net->loopback_dev;
 
        unregister_netdev(dev);
 }
 
-static struct pernet_operations loopback_net_ops = {
+static struct pernet_operations __net_initdata loopback_net_ops = {
        .init = loopback_net_init,
        .exit = loopback_net_exit,
 };