diff options
author | Michal Kubeček <mkubecek@suse.cz> | 2016-03-08 14:44:35 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-03-08 15:16:51 -0500 |
commit | 9a03cd8f38efb83c13fbe62aff50eea4efff93da (patch) | |
tree | 196c6d1b32fe34fa44f7bc9e164b6af2d0ff25ec /include/net/netns | |
parent | 3570df914f9cae15df7f6ba472a51eaf798fdb46 (diff) | |
download | linux-stable-9a03cd8f38efb83c13fbe62aff50eea4efff93da.tar.gz linux-stable-9a03cd8f38efb83c13fbe62aff50eea4efff93da.tar.bz2 linux-stable-9a03cd8f38efb83c13fbe62aff50eea4efff93da.zip |
ipv6: per netns fib6 walkers
The IPv6 FIB data structures are separated per network namespace but
there is still only one global walkers list and one global walker list
lock. This means changes in one namespace unnecessarily interfere with
walkers in other namespaces.
Replace the global list with per-netns lists (and give each its own
lock).
Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/netns')
-rw-r--r-- | include/net/netns/ipv6.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index c0368db6df54..f0109b973648 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h @@ -58,7 +58,9 @@ struct netns_ipv6 { struct timer_list ip6_fib_timer; struct hlist_head *fib_table_hash; struct fib6_table *fib6_main_tbl; + struct list_head fib6_walkers; struct dst_ops ip6_dst_ops; + rwlock_t fib6_walker_lock; unsigned int ip6_rt_gc_expire; unsigned long ip6_rt_last_gc; #ifdef CONFIG_IPV6_MULTIPLE_TABLES |