Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
One conflict in the BPF samples Makefile, some fixes in 'net' whilst we were converting over to Makefile.target rules in 'net-next'. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -621,6 +621,7 @@ static void rt6_probe(struct fib6_nh *fib6_nh)
|
||||
{
|
||||
struct __rt6_probe_work *work = NULL;
|
||||
const struct in6_addr *nh_gw;
|
||||
unsigned long last_probe;
|
||||
struct neighbour *neigh;
|
||||
struct net_device *dev;
|
||||
struct inet6_dev *idev;
|
||||
@@ -639,6 +640,7 @@ static void rt6_probe(struct fib6_nh *fib6_nh)
|
||||
nh_gw = &fib6_nh->fib_nh_gw6;
|
||||
dev = fib6_nh->fib_nh_dev;
|
||||
rcu_read_lock_bh();
|
||||
last_probe = READ_ONCE(fib6_nh->last_probe);
|
||||
idev = __in6_dev_get(dev);
|
||||
neigh = __ipv6_neigh_lookup_noref(dev, nh_gw);
|
||||
if (neigh) {
|
||||
@@ -654,13 +656,15 @@ static void rt6_probe(struct fib6_nh *fib6_nh)
|
||||
__neigh_set_probe_once(neigh);
|
||||
}
|
||||
write_unlock(&neigh->lock);
|
||||
} else if (time_after(jiffies, fib6_nh->last_probe +
|
||||
} else if (time_after(jiffies, last_probe +
|
||||
idev->cnf.rtr_probe_interval)) {
|
||||
work = kmalloc(sizeof(*work), GFP_ATOMIC);
|
||||
}
|
||||
|
||||
if (work) {
|
||||
fib6_nh->last_probe = jiffies;
|
||||
if (!work || cmpxchg(&fib6_nh->last_probe,
|
||||
last_probe, jiffies) != last_probe) {
|
||||
kfree(work);
|
||||
} else {
|
||||
INIT_WORK(&work->work, rt6_probe_deferred);
|
||||
work->target = *nh_gw;
|
||||
dev_hold(dev);
|
||||
@@ -3380,6 +3384,9 @@ int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh,
|
||||
int err;
|
||||
|
||||
fib6_nh->fib_nh_family = AF_INET6;
|
||||
#ifdef CONFIG_IPV6_ROUTER_PREF
|
||||
fib6_nh->last_probe = jiffies;
|
||||
#endif
|
||||
|
||||
err = -ENODEV;
|
||||
if (cfg->fc_ifindex) {
|
||||
|
||||
Reference in New Issue
Block a user