summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorMichal Kubeček <mkubecek@suse.cz>2016-03-08 16:44:35 +0300
committerDavid S. Miller <davem@davemloft.net>2016-03-08 23:16:51 +0300
commit9a03cd8f38efb83c13fbe62aff50eea4efff93da (patch)
tree196c6d1b32fe34fa44f7bc9e164b6af2d0ff25ec /include/net
parent3570df914f9cae15df7f6ba472a51eaf798fdb46 (diff)
downloadlinux-9a03cd8f38efb83c13fbe62aff50eea4efff93da.tar.xz
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')
-rw-r--r--include/net/netns/ipv6.h2
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