ipv6: Fix bug in ipv6_chk_same_addr().
[safe/jmp/linux-2.6] / net / ipv6 / addrconf.c
index bcb55b7..68e5809 100644 (file)
@@ -81,7 +81,7 @@
 #include <linux/random.h>
 #endif
 
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 #include <asm/unaligned.h>
 
 #include <linux/proc_fs.h>
 #endif
 
 #define        INFINITY_LIFE_TIME      0xFFFFFFFF
-#define TIME_DELTA(a,b) ((unsigned long)((long)(a) - (long)(b)))
+#define TIME_DELTA(a, b) ((unsigned long)((long)(a) - (long)(b)))
+
+#define ADDRCONF_TIMER_FUZZ_MINUS      (HZ > 50 ? HZ/50 : 1)
+#define ADDRCONF_TIMER_FUZZ            (HZ / 4)
+#define ADDRCONF_TIMER_FUZZ_MAX                (HZ)
 
 #ifdef CONFIG_SYSCTL
 static void addrconf_sysctl_register(struct inet6_dev *idev);
@@ -151,8 +155,8 @@ static void ipv6_ifa_notify(int event, struct inet6_ifaddr *ifa);
 
 static void inet6_prefix_notify(int event, struct inet6_dev *idev,
                                struct prefix_info *pinfo);
-static int ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
-                             struct net_device *dev);
+static bool ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
+                              struct net_device *dev);
 
 static ATOMIC_NOTIFIER_HEAD(inet6addr_chain);
 
@@ -249,8 +253,7 @@ static void addrconf_del_timer(struct inet6_ifaddr *ifp)
                __in6_ifa_put(ifp);
 }
 
-enum addrconf_timer_t
-{
+enum addrconf_timer_t {
        AC_NONE,
        AC_DAD,
        AC_RS,
@@ -270,7 +273,8 @@ static void addrconf_mod_timer(struct inet6_ifaddr *ifp,
        case AC_RS:
                ifp->timer.function = addrconf_rs_timer;
                break;
-       default:;
+       default:
+               break;
        }
        ifp->timer.expires = jiffies + when;
        add_timer(&ifp->timer);
@@ -325,7 +329,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
 #endif
        dev_put(dev);
        if (!idev->dead) {
-               printk("Freeing alive inet6 device %p\n", idev);
+               pr_warning("Freeing alive inet6 device %p\n", idev);
                return;
        }
        snmp6_free_dev(idev);
@@ -441,8 +445,10 @@ static struct inet6_dev * ipv6_find_idev(struct net_device *dev)
 
        ASSERT_RTNL();
 
-       if ((idev = __in6_dev_get(dev)) == NULL) {
-               if ((idev = ipv6_add_dev(dev)) == NULL)
+       idev = __in6_dev_get(dev);
+       if (!idev) {
+               idev = ipv6_add_dev(dev);
+               if (!idev)
                        return NULL;
        }
 
@@ -544,10 +550,10 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp)
        in6_dev_put(ifp->idev);
 
        if (del_timer(&ifp->timer))
-               printk("Timer is still running, when freeing ifa=%p\n", ifp);
+               pr_notice("Timer is still running, when freeing ifa=%p\n", ifp);
 
        if (!ifp->dead) {
-               printk("Freeing alive inet6 address %p\n", ifp);
+               pr_warning("Freeing alive inet6 address %p\n", ifp);
                return;
        }
        dst_release(&ifp->rt->u.dst);
@@ -1225,7 +1231,6 @@ try_nextdev:
        in6_ifa_put(hiscore->ifa);
        return 0;
 }
-
 EXPORT_SYMBOL(ipv6_dev_get_saddr);
 
 int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
@@ -1235,7 +1240,8 @@ int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
        int err = -EADDRNOTAVAIL;
 
        rcu_read_lock();
-       if ((idev = __in6_dev_get(dev)) != NULL) {
+       idev = __in6_dev_get(dev);
+       if (idev) {
                struct inet6_ifaddr *ifp;
 
                read_lock_bh(&idev->lock);
@@ -1289,23 +1295,22 @@ int ipv6_chk_addr(struct net *net, struct in6_addr *addr,
 }
 EXPORT_SYMBOL(ipv6_chk_addr);
 
-static
-int ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
-                      struct net_device *dev)
+static bool ipv6_chk_same_addr(struct net *net, const struct in6_addr *addr,
+                              struct net_device *dev)
 {
+       unsigned int hash = ipv6_addr_hash(addr);
        struct inet6_ifaddr *ifp;
        struct hlist_node *node;
-       unsigned int hash = ipv6_addr_hash(addr);
 
        hlist_for_each_entry(ifp, node, &inet6_addr_lst[hash], addr_lst) {
                if (!net_eq(dev_net(ifp->idev->dev), net))
                        continue;
                if (ipv6_addr_equal(&ifp->addr, addr)) {
                        if (dev == NULL || ifp->idev->dev == dev)
-                               break;
+                               return true;
                }
        }
-       return ifp != NULL;
+       return false;
 }
 
 int ipv6_chk_prefix(struct in6_addr *addr, struct net_device *dev)
@@ -1725,7 +1730,8 @@ static struct inet6_dev *addrconf_add_dev(struct net_device *dev)
 
        ASSERT_RTNL();
 
-       if ((idev = ipv6_find_idev(dev)) == NULL)
+       idev = ipv6_find_idev(dev);
+       if (!idev)
                return NULL;
 
        /* Add default multicast route */
@@ -2433,7 +2439,8 @@ static void addrconf_ip6_tnl_config(struct net_device *dev)
 
        ASSERT_RTNL();
 
-       if ((idev = addrconf_add_dev(dev)) == NULL) {
+       idev = addrconf_add_dev(dev);
+       if (!idev) {
                printk(KERN_DEBUG "init ip6-ip6: add_dev failed\n");
                return;
        }
@@ -2448,7 +2455,7 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
        int run_pending = 0;
        int err;
 
-       switch(event) {
+       switch (event) {
        case NETDEV_REGISTER:
                if (!idev && dev->mtu >= IPV6_MIN_MTU) {
                        idev = ipv6_add_dev(dev);
@@ -2500,7 +2507,7 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
                        run_pending = 1;
                }
 
-               switch(dev->type) {
+               switch (dev->type) {
 #if defined(CONFIG_IPV6_SIT) || defined(CONFIG_IPV6_SIT_MODULE)
                case ARPHRD_SIT:
                        addrconf_sit_config(dev);
@@ -2837,7 +2844,7 @@ static void addrconf_dad_start(struct inet6_ifaddr *ifp, u32 flags)
         * Optimistic nodes can start receiving
         * Frames right away
         */
-       if(ifp->flags & IFA_F_OPTIMISTIC)
+       if (ifp->flags & IFA_F_OPTIMISTIC)
                ip6_ins_rt(ifp->rt);
 
        addrconf_dad_kick(ifp);
@@ -2887,7 +2894,7 @@ out:
 
 static void addrconf_dad_completed(struct inet6_ifaddr *ifp)
 {
-       struct net_device *     dev = ifp->idev->dev;
+       struct net_device *dev = ifp->idev->dev;
 
        /*
         *      Configure the address for reception. Now it is valid.
@@ -2918,7 +2925,8 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp)
        }
 }
 
-static void addrconf_dad_run(struct inet6_dev *idev) {
+static void addrconf_dad_run(struct inet6_dev *idev)
+{
        struct inet6_ifaddr *ifp;
 
        read_lock_bh(&idev->lock);
@@ -2983,7 +2991,7 @@ static struct inet6_ifaddr *if6_get_idx(struct seq_file *seq, loff_t pos)
        struct inet6_ifaddr *ifa = if6_get_first(seq);
 
        if (ifa)
-               while(pos && (ifa = if6_get_next(seq, ifa)) != NULL)
+               while (pos && (ifa = if6_get_next(seq, ifa)) != NULL)
                        --pos;
        return pos ? NULL : ifa;
 }
@@ -3102,15 +3110,15 @@ int ipv6_chk_home_addr(struct net *net, struct in6_addr *addr)
 
 static void addrconf_verify(unsigned long foo)
 {
+       unsigned long now, next, next_sec, next_sched;
        struct inet6_ifaddr *ifp;
        struct hlist_node *node;
-       unsigned long now, next;
        int i;
 
        rcu_read_lock_bh();
        spin_lock(&addrconf_verify_lock);
        now = jiffies;
-       next = now + ADDR_CHECK_FREQUENCY;
+       next = round_jiffies_up(now + ADDR_CHECK_FREQUENCY);
 
        del_timer(&addr_chk_timer);
 
@@ -3119,21 +3127,13 @@ restart:
                hlist_for_each_entry_rcu(ifp, node,
                                         &inet6_addr_lst[i], addr_lst) {
                        unsigned long age;
-#ifdef CONFIG_IPV6_PRIVACY
-                       unsigned long regen_advance;
-#endif
 
                        if (ifp->flags & IFA_F_PERMANENT)
                                continue;
 
                        spin_lock(&ifp->lock);
-                       age = (now - ifp->tstamp) / HZ;
-
-#ifdef CONFIG_IPV6_PRIVACY
-                       regen_advance = ifp->idev->cnf.regen_max_retry *
-                                       ifp->idev->cnf.dad_transmits *
-                                       ifp->idev->nd_parms->retrans_time / HZ;
-#endif
+                       /* We try to batch several events at once. */
+                       age = (now - ifp->tstamp + ADDRCONF_TIMER_FUZZ_MINUS) / HZ;
 
                        if (ifp->valid_lft != INFINITY_LIFE_TIME &&
                            age >= ifp->valid_lft) {
@@ -3168,6 +3168,10 @@ restart:
 #ifdef CONFIG_IPV6_PRIVACY
                        } else if ((ifp->flags&IFA_F_TEMPORARY) &&
                                   !(ifp->flags&IFA_F_TENTATIVE)) {
+                               unsigned long regen_advance = ifp->idev->cnf.regen_max_retry *
+                                       ifp->idev->cnf.dad_transmits *
+                                       ifp->idev->nd_parms->retrans_time / HZ;
+
                                if (age >= ifp->prefered_lft - regen_advance) {
                                        struct inet6_ifaddr *ifpub = ifp->ifpub;
                                        if (time_before(ifp->tstamp + ifp->prefered_lft * HZ, next))
@@ -3199,7 +3203,21 @@ restart:
                }
        }
 
-       addr_chk_timer.expires = time_before(next, jiffies + HZ) ? jiffies + HZ : next;
+       next_sec = round_jiffies_up(next);
+       next_sched = next;
+
+       /* If rounded timeout is accurate enough, accept it. */
+       if (time_before(next_sec, next + ADDRCONF_TIMER_FUZZ))
+               next_sched = next_sec;
+
+       /* And minimum interval is ADDRCONF_TIMER_FUZZ_MAX. */
+       if (time_before(next_sched, jiffies + ADDRCONF_TIMER_FUZZ_MAX))
+               next_sched = jiffies + ADDRCONF_TIMER_FUZZ_MAX;
+
+       ADBG((KERN_DEBUG "now = %lu, schedule = %lu, rounded schedule = %lu => %lu\n",
+             now, next, next_sec, next_sched));
+
+       addr_chk_timer.expires = next_sched;
        add_timer(&addr_chk_timer);
        spin_unlock(&addrconf_verify_lock);
        rcu_read_unlock_bh();
@@ -3492,8 +3510,7 @@ static int inet6_fill_ifacaddr(struct sk_buff *skb, struct ifacaddr6 *ifaca,
        return nlmsg_end(skb, nlh);
 }
 
-enum addr_type_t
-{
+enum addr_type_t {
        UNICAST_ADDR,
        MULTICAST_ADDR,
        ANYCAST_ADDR,
@@ -3592,7 +3609,8 @@ static int inet6_dump_addr(struct sk_buff *skb, struct netlink_callback *cb,
                        if (idx > s_idx)
                                s_ip_idx = 0;
                        ip_idx = 0;
-                       if ((idev = __in6_dev_get(dev)) == NULL)
+                       idev = __in6_dev_get(dev);
+                       if (!idev)
                                goto cont;
 
                        if (in6_dump_addrs(idev, skb, cb, type,
@@ -3659,12 +3677,14 @@ static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr* nlh,
        if (ifm->ifa_index)
                dev = __dev_get_by_index(net, ifm->ifa_index);
 
-       if ((ifa = ipv6_get_ifaddr(net, addr, dev, 1)) == NULL) {
+       ifa = ipv6_get_ifaddr(net, addr, dev, 1);
+       if (!ifa) {
                err = -EADDRNOTAVAIL;
                goto errout;
        }
 
-       if ((skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_KERNEL)) == NULL) {
+       skb = nlmsg_new(inet6_ifaddr_msgsize(), GFP_KERNEL);
+       if (!skb) {
                err = -ENOBUFS;
                goto errout_ifa;
        }
@@ -3789,7 +3809,7 @@ static inline void __snmp6_fill_stats(u64 *stats, void __percpu **mib,
 static void snmp6_fill_stats(u64 *stats, struct inet6_dev *idev, int attrtype,
                             int bytes)
 {
-       switch(attrtype) {
+       switch (attrtype) {
        case IFLA_INET6_STATS:
                __snmp6_fill_stats(stats, (void __percpu **)idev->stats.ipv6, IPSTATS_MIB_MAX, bytes);
                break;
@@ -4141,211 +4161,211 @@ static struct addrconf_sysctl_table
        .sysctl_header = NULL,
        .addrconf_vars = {
                {
-                       .procname       =       "forwarding",
-                       .data           =       &ipv6_devconf.forwarding,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       addrconf_sysctl_forward,
+                       .procname       = "forwarding",
+                       .data           = &ipv6_devconf.forwarding,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = addrconf_sysctl_forward,
                },
                {
-                       .procname       =       "hop_limit",
-                       .data           =       &ipv6_devconf.hop_limit,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "hop_limit",
+                       .data           = &ipv6_devconf.hop_limit,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "mtu",
-                       .data           =       &ipv6_devconf.mtu6,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "mtu",
+                       .data           = &ipv6_devconf.mtu6,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "accept_ra",
-                       .data           =       &ipv6_devconf.accept_ra,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_ra",
+                       .data           = &ipv6_devconf.accept_ra,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "accept_redirects",
-                       .data           =       &ipv6_devconf.accept_redirects,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_redirects",
+                       .data           = &ipv6_devconf.accept_redirects,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "autoconf",
-                       .data           =       &ipv6_devconf.autoconf,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "autoconf",
+                       .data           = &ipv6_devconf.autoconf,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "dad_transmits",
-                       .data           =       &ipv6_devconf.dad_transmits,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "dad_transmits",
+                       .data           = &ipv6_devconf.dad_transmits,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "router_solicitations",
-                       .data           =       &ipv6_devconf.rtr_solicits,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "router_solicitations",
+                       .data           = &ipv6_devconf.rtr_solicits,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "router_solicitation_interval",
-                       .data           =       &ipv6_devconf.rtr_solicit_interval,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec_jiffies,
+                       .procname       = "router_solicitation_interval",
+                       .data           = &ipv6_devconf.rtr_solicit_interval,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec_jiffies,
                },
                {
-                       .procname       =       "router_solicitation_delay",
-                       .data           =       &ipv6_devconf.rtr_solicit_delay,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec_jiffies,
+                       .procname       = "router_solicitation_delay",
+                       .data           = &ipv6_devconf.rtr_solicit_delay,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec_jiffies,
                },
                {
-                       .procname       =       "force_mld_version",
-                       .data           =       &ipv6_devconf.force_mld_version,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "force_mld_version",
+                       .data           = &ipv6_devconf.force_mld_version,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
 #ifdef CONFIG_IPV6_PRIVACY
                {
-                       .procname       =       "use_tempaddr",
-                       .data           =       &ipv6_devconf.use_tempaddr,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "use_tempaddr",
+                       .data           = &ipv6_devconf.use_tempaddr,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "temp_valid_lft",
-                       .data           =       &ipv6_devconf.temp_valid_lft,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "temp_valid_lft",
+                       .data           = &ipv6_devconf.temp_valid_lft,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "temp_prefered_lft",
-                       .data           =       &ipv6_devconf.temp_prefered_lft,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "temp_prefered_lft",
+                       .data           = &ipv6_devconf.temp_prefered_lft,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "regen_max_retry",
-                       .data           =       &ipv6_devconf.regen_max_retry,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "regen_max_retry",
+                       .data           = &ipv6_devconf.regen_max_retry,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "max_desync_factor",
-                       .data           =       &ipv6_devconf.max_desync_factor,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "max_desync_factor",
+                       .data           = &ipv6_devconf.max_desync_factor,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
 #endif
                {
-                       .procname       =       "max_addresses",
-                       .data           =       &ipv6_devconf.max_addresses,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "max_addresses",
+                       .data           = &ipv6_devconf.max_addresses,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "accept_ra_defrtr",
-                       .data           =       &ipv6_devconf.accept_ra_defrtr,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_ra_defrtr",
+                       .data           = &ipv6_devconf.accept_ra_defrtr,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "accept_ra_pinfo",
-                       .data           =       &ipv6_devconf.accept_ra_pinfo,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_ra_pinfo",
+                       .data           = &ipv6_devconf.accept_ra_pinfo,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
 #ifdef CONFIG_IPV6_ROUTER_PREF
                {
-                       .procname       =       "accept_ra_rtr_pref",
-                       .data           =       &ipv6_devconf.accept_ra_rtr_pref,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_ra_rtr_pref",
+                       .data           = &ipv6_devconf.accept_ra_rtr_pref,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "router_probe_interval",
-                       .data           =       &ipv6_devconf.rtr_probe_interval,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec_jiffies,
+                       .procname       = "router_probe_interval",
+                       .data           = &ipv6_devconf.rtr_probe_interval,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec_jiffies,
                },
 #ifdef CONFIG_IPV6_ROUTE_INFO
                {
-                       .procname       =       "accept_ra_rt_info_max_plen",
-                       .data           =       &ipv6_devconf.accept_ra_rt_info_max_plen,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_ra_rt_info_max_plen",
+                       .data           = &ipv6_devconf.accept_ra_rt_info_max_plen,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
 #endif
 #endif
                {
-                       .procname       =       "proxy_ndp",
-                       .data           =       &ipv6_devconf.proxy_ndp,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "proxy_ndp",
+                       .data           = &ipv6_devconf.proxy_ndp,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
-                       .procname       =       "accept_source_route",
-                       .data           =       &ipv6_devconf.accept_source_route,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_source_route",
+                       .data           = &ipv6_devconf.accept_source_route,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
 #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
                {
-                       .procname       =       "optimistic_dad",
-                       .data           =       &ipv6_devconf.optimistic_dad,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "optimistic_dad",
+                       .data           = &ipv6_devconf.optimistic_dad,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
 
                },
 #endif
 #ifdef CONFIG_IPV6_MROUTE
                {
-                       .procname       =       "mc_forwarding",
-                       .data           =       &ipv6_devconf.mc_forwarding,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0444,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "mc_forwarding",
+                       .data           = &ipv6_devconf.mc_forwarding,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0444,
+                       .proc_handler   = proc_dointvec,
                },
 #endif
                {
-                       .procname       =       "disable_ipv6",
-                       .data           =       &ipv6_devconf.disable_ipv6,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       addrconf_sysctl_disable,
+                       .procname       = "disable_ipv6",
+                       .data           = &ipv6_devconf.disable_ipv6,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = addrconf_sysctl_disable,
                },
                {
-                       .procname       =       "accept_dad",
-                       .data           =       &ipv6_devconf.accept_dad,
-                       .maxlen         =       sizeof(int),
-                       .mode           =       0644,
-                       .proc_handler   =       proc_dointvec,
+                       .procname       = "accept_dad",
+                       .data           = &ipv6_devconf.accept_dad,
+                       .maxlen         = sizeof(int),
+                       .mode           = 0644,
+                       .proc_handler   = proc_dointvec,
                },
                {
                        .procname       = "force_tllao",
@@ -4382,7 +4402,7 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
                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].data += (char *)p - (char *)&ipv6_devconf;
                t->addrconf_vars[i].extra1 = idev; /* embedded; no ref */
                t->addrconf_vars[i].extra2 = net;
        }
@@ -4519,14 +4539,12 @@ int register_inet6addr_notifier(struct notifier_block *nb)
 {
        return atomic_notifier_chain_register(&inet6addr_chain, nb);
 }
-
 EXPORT_SYMBOL(register_inet6addr_notifier);
 
 int unregister_inet6addr_notifier(struct notifier_block *nb)
 {
-       return atomic_notifier_chain_unregister(&inet6addr_chain,nb);
+       return atomic_notifier_chain_unregister(&inet6addr_chain, nb);
 }
-
 EXPORT_SYMBOL(unregister_inet6addr_notifier);
 
 /*
@@ -4537,9 +4555,10 @@ int __init addrconf_init(void)
 {
        int i, err;
 
-       if ((err = ipv6_addr_label_init()) < 0) {
-               printk(KERN_CRIT "IPv6 Addrconf: cannot initialize default policy table: %d.\n",
-                       err);
+       err = ipv6_addr_label_init();
+       if (err < 0) {
+               printk(KERN_CRIT "IPv6 Addrconf:"
+                      " cannot initialize default policy table: %d.\n", err);
                return err;
        }