X25: Check for errors in x25_init
authorandrew hendry <andrew.hendry@gmail.com>
Tue, 24 Nov 2009 15:15:42 +0000 (15:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Nov 2009 08:25:01 +0000 (00:25 -0800)
Adds error checking to x25_init.

Signed-off-by: Andrew Hendry <andrew.hendry@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/x25/af_x25.c

index f327ef5cb0e9f61b61bc5fbb9affa16b6e82663e..e3219e4cd0445195ecda74030191f03a49438fde 100644 (file)
@@ -1721,18 +1721,31 @@ static int __init x25_init(void)
        if (rc != 0)
                goto out;
 
-       sock_register(&x25_family_ops);
+       rc = sock_register(&x25_family_ops);
+       if (rc != 0)
+               goto out_proto;
 
        dev_add_pack(&x25_packet_type);
 
-       register_netdevice_notifier(&x25_dev_notifier);
+       rc = register_netdevice_notifier(&x25_dev_notifier);
+       if (rc != 0)
+               goto out_sock;
 
        printk(KERN_INFO "X.25 for Linux Version 0.2\n");
 
        x25_register_sysctl();
-       x25_proc_init();
+       rc = x25_proc_init();
+       if (rc != 0)
+               goto out_dev;
 out:
        return rc;
+out_dev:
+       unregister_netdevice_notifier(&x25_dev_notifier);
+out_sock:
+       sock_unregister(AF_X25);
+out_proto:
+       proto_unregister(&x25_proto);
+       goto out;
 }
 module_init(x25_init);