struct inet6_dev *idev;
 
        for_each_netdev(net, dev) {
-               idev = __in6_dev_get(dev);
+               idev = __in6_dev_get_rtnl_net(dev);
                if (idev) {
                        int changed = (!idev->cnf.forwarding) ^ (!newf);
 
 
 static int addrconf_fixup_forwarding(const struct ctl_table *table, int *p, int newf)
 {
-       struct net *net;
+       struct net *net = (struct net *)table->extra2;
        int old;
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
-       net = (struct net *)table->extra2;
        old = *p;
        WRITE_ONCE(*p, newf);
 
                                                     NETCONFA_FORWARDING,
                                                     NETCONFA_IFINDEX_DEFAULT,
                                                     net->ipv6.devconf_dflt);
-               rtnl_unlock();
+               rtnl_net_unlock(net);
                return 0;
        }
 
                                                     net->ipv6.devconf_all);
        } else if ((!newf) ^ (!old))
                dev_forward_change((struct inet6_dev *)table->extra1);
-       rtnl_unlock();
+       rtnl_net_unlock(net);
 
        if (newf)
                rt6_purge_dflt_routers(net);
        struct inet6_dev *idev;
 
        for_each_netdev(net, dev) {
-               idev = __in6_dev_get(dev);
+               idev = __in6_dev_get_rtnl_net(dev);
                if (idev) {
                        int changed = (!idev->cnf.ignore_routes_with_linkdown) ^ (!newf);
 
 
 static int addrconf_fixup_linkdown(const struct ctl_table *table, int *p, int newf)
 {
-       struct net *net;
+       struct net *net = (struct net *)table->extra2;
        int old;
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
-       net = (struct net *)table->extra2;
        old = *p;
        WRITE_ONCE(*p, newf);
 
                                                     NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
                                                     NETCONFA_IFINDEX_DEFAULT,
                                                     net->ipv6.devconf_dflt);
-               rtnl_unlock();
+               rtnl_net_unlock(net);
                return 0;
        }
 
                                                     NETCONFA_IFINDEX_ALL,
                                                     net->ipv6.devconf_all);
        }
-       rtnl_unlock();
+
+       rtnl_net_unlock(net);
 
        return 1;
 }
        struct inet6_dev *idev;
 
        for_each_netdev(net, dev) {
-               idev = __in6_dev_get(dev);
+               idev = __in6_dev_get_rtnl_net(dev);
                if (idev) {
                        int changed = (!idev->cnf.disable_ipv6) ^ (!newf);
 
                return 0;
        }
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
        old = *p;
        if (p == &net->ipv6.devconf_all->disable_ipv6) {
                WRITE_ONCE(net->ipv6.devconf_dflt->disable_ipv6, newf);
                addrconf_disable_change(net, newf);
-       } else if ((!newf) ^ (!old))
+       } else if ((!newf) ^ (!old)) {
                dev_disable_change((struct inet6_dev *)table->extra1);
+       }
 
-       rtnl_unlock();
+       rtnl_net_unlock(net);
        return 0;
 }
 
        if (write && old != new) {
                struct net *net = ctl->extra2;
 
-               if (!rtnl_trylock())
+               if (!rtnl_net_trylock(net))
                        return restart_syscall();
 
-               if (valp == &net->ipv6.devconf_dflt->proxy_ndp)
+               if (valp == &net->ipv6.devconf_dflt->proxy_ndp) {
                        inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
                                                     NETCONFA_PROXY_NEIGH,
                                                     NETCONFA_IFINDEX_DEFAULT,
                                                     net->ipv6.devconf_dflt);
-               else if (valp == &net->ipv6.devconf_all->proxy_ndp)
+               } else if (valp == &net->ipv6.devconf_all->proxy_ndp) {
                        inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
                                                     NETCONFA_PROXY_NEIGH,
                                                     NETCONFA_IFINDEX_ALL,
                                                     net->ipv6.devconf_all);
-               else {
+               } else {
                        struct inet6_dev *idev = ctl->extra1;
 
                        inet6_netconf_notify_devconf(net, RTM_NEWNETCONF,
                                                     idev->dev->ifindex,
                                                     &idev->cnf);
                }
-               rtnl_unlock();
+               rtnl_net_unlock(net);
        }
 
        return ret;
                .mode = ctl->mode,
        };
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
        new_val = *((u32 *)ctl->data);
 
                        WRITE_ONCE(net->ipv6.devconf_dflt->addr_gen_mode, new_val);
                        for_each_netdev(net, dev) {
-                               idev = __in6_dev_get(dev);
+                               idev = __in6_dev_get_rtnl_net(dev);
                                if (idev &&
                                    idev->cnf.addr_gen_mode != new_val) {
                                        WRITE_ONCE(idev->cnf.addr_gen_mode,
        }
 
 out:
-       rtnl_unlock();
+       rtnl_net_unlock(net);
 
        return ret;
 }
        lctl.maxlen = IPV6_MAX_STRLEN;
        lctl.data = str;
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
        if (!write && !secret->initialized) {
                struct net_device *dev;
 
                for_each_netdev(net, dev) {
-                       struct inet6_dev *idev = __in6_dev_get(dev);
+                       struct inet6_dev *idev = __in6_dev_get_rtnl_net(dev);
 
                        if (idev) {
                                WRITE_ONCE(idev->cnf.addr_gen_mode,
        }
 
 out:
-       rtnl_unlock();
+       rtnl_net_unlock(net);
 
        return err;
 }
                return 0;
        }
 
-       if (!rtnl_trylock())
+       if (!rtnl_net_trylock(net))
                return restart_syscall();
 
        WRITE_ONCE(*valp, val);
                struct net_device *dev;
 
                for_each_netdev(net, dev) {
-                       idev = __in6_dev_get(dev);
+                       idev = __in6_dev_get_rtnl_net(dev);
                        if (idev)
                                addrconf_disable_policy_idev(idev, val);
                }
                addrconf_disable_policy_idev(idev, val);
        }
 
-       rtnl_unlock();
+       rtnl_net_unlock(net);
        return 0;
 }