Message ID | 1566958765-1686-1-git-send-email-wang.yi59@zte.com.cn |
---|---|
State | Rejected |
Delegated to: | David Miller |
Headers | show |
Series | [v2] ipv6: Not to probe neighbourless routes | expand |
Because you didn't even compile test the previous patch, I want to know how you did functional testing on this version on current kernel versions?
From: <wang.yi59@zte.com.cn> Date: Wed, 28 Aug 2019 16:50:08 +0800 (CST) > We used an older version of the kernel, and found that configuring default > route led to a lot of NS messages, which affected the real business. > > Although commit f547fac624be adds rate-limiting, there are still some > unreasonable things. > > We have tested this change on CentOS 7.6 (3.10.0-957), whose rt6_probe() > implementation is similar to the latest code. When remaking patch based on > linux-5.3-rc5, a line of code was missed out with a mistack. Therefore, you are not testing this patch on current kernels, so you are sending a patch which is completely untested. This is not appropriate nor accceptable.
I am tossing this patch. Resubmit it when you test it properly on current kernels.
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 4b5656c..8c2e022 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -124,11 +124,6 @@ struct rt6_exception { struct fib6_nh { struct fib_nh_common nh_common; - -#ifdef CONFIG_IPV6_ROUTER_PREF - unsigned long last_probe; -#endif - struct rt6_info * __percpu *rt6i_pcpu; struct rt6_exception_bucket __rcu *rt6i_exception_bucket; }; diff --git a/net/ipv6/route.c b/net/ipv6/route.c index fd059e0..1839dd7 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -639,12 +639,12 @@ 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(); - idev = __in6_dev_get(dev); neigh = __ipv6_neigh_lookup_noref(dev, nh_gw); if (neigh) { if (neigh->nud_state & NUD_VALID) goto out; + idev = __in6_dev_get(dev); write_lock(&neigh->lock); if (!(neigh->nud_state & NUD_VALID) && time_after(jiffies, @@ -654,13 +654,9 @@ 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 + - idev->cnf.rtr_probe_interval)) { - work = kmalloc(sizeof(*work), GFP_ATOMIC); } if (work) { - fib6_nh->last_probe = jiffies; INIT_WORK(&work->work, rt6_probe_deferred); work->target = *nh_gw; dev_hold(dev);