On Wed, May 15, 2019 at 07:39:52PM -0700, Eric Dumazet wrote: > At ipv6 route dismantle, fib6_drop_pcpu_from() is responsible > for finding all percpu routes and set their ->from pointer > to NULL, so that fib6_ref can reach its expected value (1). > > The problem right now is that other cpus can still catch the > route being deleted, since there is no rcu grace period > between the route deletion and call to fib6_drop_pcpu_from() > > This can leak the fib6 and associated resources, since no > notifier will take care of removing the last reference(s). > > I decided to add another boolean (fib6_destroying) instead > of reusing/renaming exception_bucket_flushed to ease stable backports, > and properly document the memory barriers used to implement this fix. > > This patch has been co-developped with Wei Wang. Nice fix!
Acked-by: Martin KaFai Lau <ka...@fb.com>