Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Upgrade to 4.4.50-rt62
[kvmfornfv.git]
/
kernel
/
net
/
ipv6
/
addrconf.c
diff --git
a/kernel/net/ipv6/addrconf.c
b/kernel/net/ipv6/addrconf.c
index
e8d3da0
..
253186a
100644
(file)
--- a/
kernel/net/ipv6/addrconf.c
+++ b/
kernel/net/ipv6/addrconf.c
@@
-1898,6
+1898,7
@@
errdad:
spin_unlock_bh(&ifp->lock);
addrconf_mod_dad_work(ifp, 0);
spin_unlock_bh(&ifp->lock);
addrconf_mod_dad_work(ifp, 0);
+ in6_ifa_put(ifp);
}
/* Join to solicited addr multicast group.
}
/* Join to solicited addr multicast group.
@@
-2915,7
+2916,7
@@
static void init_loopback(struct net_device *dev)
* lo device down, release this obsolete dst and
* reallocate a new router for ifa.
*/
* lo device down, release this obsolete dst and
* reallocate a new router for ifa.
*/
- if (
sp_ifa->rt->dst.obsolete > 0
) {
+ if (
!atomic_read(&sp_ifa->rt->rt6i_ref)
) {
ip6_rt_put(sp_ifa->rt);
sp_ifa->rt = NULL;
} else {
ip6_rt_put(sp_ifa->rt);
sp_ifa->rt = NULL;
} else {
@@
-3609,6
+3610,7
@@
static void addrconf_dad_work(struct work_struct *w)
addrconf_dad_begin(ifp);
goto out;
} else if (action == DAD_ABORT) {
addrconf_dad_begin(ifp);
goto out;
} else if (action == DAD_ABORT) {
+ in6_ifa_hold(ifp);
addrconf_dad_stop(ifp, 1);
goto out;
}
addrconf_dad_stop(ifp, 1);
goto out;
}
@@
-5242,8
+5244,7
@@
static void addrconf_disable_change(struct net *net, __s32 newf)
struct net_device *dev;
struct inet6_dev *idev;
struct net_device *dev;
struct inet6_dev *idev;
- rcu_read_lock();
- for_each_netdev_rcu(net, dev) {
+ for_each_netdev(net, dev) {
idev = __in6_dev_get(dev);
if (idev) {
int changed = (!idev->cnf.disable_ipv6) ^ (!newf);
idev = __in6_dev_get(dev);
if (idev) {
int changed = (!idev->cnf.disable_ipv6) ^ (!newf);
@@
-5252,7
+5253,6
@@
static void addrconf_disable_change(struct net *net, __s32 newf)
dev_disable_change(idev);
}
}
dev_disable_change(idev);
}
}
- rcu_read_unlock();
}
static int addrconf_disable_ipv6(struct ctl_table *table, int *p, int newf)
}
static int addrconf_disable_ipv6(struct ctl_table *table, int *p, int newf)