]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv6/addrconf.c
[IPV6]: Cleanup the addconf_sysctl_register
[net-next-2.6.git] / net / ipv6 / addrconf.c
index f177424c186f3adbb9c1662b66aa11d767f36335..2d2886a0b66da97ed8987704f01b5dcb05226ec1 100644 (file)
@@ -4127,7 +4127,8 @@ static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf
 
        t = kmemdup(&addrconf_sysctl, sizeof(*t), GFP_KERNEL);
        if (t == NULL)
-               return;
+               goto out;
+
        for (i=0; t->addrconf_vars[i].data; i++) {
                t->addrconf_vars[i].data += (char*)p - (char*)&ipv6_devconf;
                t->addrconf_vars[i].extra1 = idev; /* embedded; no ref */
@@ -4147,7 +4148,7 @@ static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf
         */
        dev_name = kstrdup(dev_name, GFP_KERNEL);
        if (!dev_name)
-           goto free;
+               goto free;
 
        t->addrconf_dev[0].procname = dev_name;
 
@@ -4159,16 +4160,15 @@ static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf
        t->sysctl_header = register_sysctl_table(t->addrconf_root_dir);
        if (t->sysctl_header == NULL)
                goto free_procname;
-       else
-               p->sysctl = t;
+
+       p->sysctl = t;
        return;
 
-       /* error path */
- free_procname:
+free_procname:
        kfree(dev_name);
- free:
+free:
        kfree(t);
-
+out:
        return;
 }