From: David Ahern <dsah...@kernel.org> Date: Mon, 3 Jun 2019 18:37:03 -0700
> From: David Ahern <dsah...@gmail.com> > > A recent commit had an unintended side effect with reject routes: > rt6i_pcpu is expected to always be initialized for all fib6_info except > the null entry. The commit mentioned below skips it for reject routes > and ends up leaking references to the loopback device. For example, > > ip netns add foo > ip -netns foo li set lo up > ip -netns foo -6 ro add blackhole 2001:db8:1::1 > ip netns exec foo ping6 2001:db8:1::1 > ip netns del foo > > ends up spewing: > unregister_netdevice: waiting for lo to become free. Usage count = 3 > > The fib_nh_common_init is not needed for reject routes (no ipv4 caching > or encaps), so move the alloc_percpu_gfp after it and adjust the goto label. > > Fixes: f40b6ae2b612 ("ipv6: Move pcpu cached routes to fib6_nh") > Signed-off-by: David Ahern <dsah...@gmail.com> Applied.