rcu_read_lock();
        idev = rcu_dereference(dev->ip6_ptr);
        if (idev)
-               atomic_inc(&idev->refcnt);
+               refcount_inc(&idev->refcnt);
        rcu_read_unlock();
        return idev;
 }
 
 static inline void in6_dev_put(struct inet6_dev *idev)
 {
-       if (atomic_dec_and_test(&idev->refcnt))
+       if (refcount_dec_and_test(&idev->refcnt))
                in6_dev_finish_destroy(idev);
 }
 
 static inline void __in6_dev_put(struct inet6_dev *idev)
 {
-       atomic_dec(&idev->refcnt);
+       refcount_dec(&idev->refcnt);
 }
 
 static inline void in6_dev_hold(struct inet6_dev *idev)
 {
-       atomic_inc(&idev->refcnt);
+       refcount_inc(&idev->refcnt);
 }
 
 void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp);
 
        }
 
        /* One reference from device. */
-       in6_dev_hold(ndev);
+       refcount_set(&ndev->refcnt, 1);
 
        if (dev->flags & (IFF_NOARP | IFF_LOOPBACK))
                ndev->cnf.accept_dad = -1;