diff options
Diffstat (limited to 'net/ipv6/ip6mr.c')
| -rw-r--r-- | net/ipv6/ip6mr.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c index 073071f2b75..66078dad7fe 100644 --- a/net/ipv6/ip6mr.c +++ b/net/ipv6/ip6mr.c @@ -120,7 +120,7 @@ static void mroute_clean_tables(struct mr6_table *mrt);  static void ipmr_expire_process(unsigned long arg);  #ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES -#define ip6mr_for_each_table(mrt, met) \ +#define ip6mr_for_each_table(mrt, net) \  	list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list)  static struct mr6_table *ip6mr_get_table(struct net *net, u32 id) @@ -254,8 +254,10 @@ static void __net_exit ip6mr_rules_exit(struct net *net)  {  	struct mr6_table *mrt, *next; -	list_for_each_entry_safe(mrt, next, &net->ipv6.mr6_tables, list) +	list_for_each_entry_safe(mrt, next, &net->ipv6.mr6_tables, list) { +		list_del(&mrt->list);  		ip6mr_free_table(mrt); +	}  	fib_rules_unregister(net->ipv6.mr6_rules_ops);  }  #else  |