Commit e2666f84 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

fib: add rtnl locking in ip_fib_net_exit

Daniel J Blueman reported a lockdep splat in trie_firstleaf(), caused by
RTNL being not locked before a call to fib_table_flush()
Reported-by: default avatarDaniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c031235b
...@@ -1068,6 +1068,7 @@ static void ip_fib_net_exit(struct net *net) ...@@ -1068,6 +1068,7 @@ static void ip_fib_net_exit(struct net *net)
fib4_rules_exit(net); fib4_rules_exit(net);
#endif #endif
rtnl_lock();
for (i = 0; i < FIB_TABLE_HASHSZ; i++) { for (i = 0; i < FIB_TABLE_HASHSZ; i++) {
struct fib_table *tb; struct fib_table *tb;
struct hlist_head *head; struct hlist_head *head;
...@@ -1080,6 +1081,7 @@ static void ip_fib_net_exit(struct net *net) ...@@ -1080,6 +1081,7 @@ static void ip_fib_net_exit(struct net *net)
fib_free_table(tb); fib_free_table(tb);
} }
} }
rtnl_unlock();
kfree(net->ipv4.fib_table_hash); kfree(net->ipv4.fib_table_hash);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment