ipv4: fix a RCU-list lock in fib_triestat_seq_show
[platform/kernel/linux-rpi.git] / net / ipv4 / fib_trie.c
index f12fa8d..1b851fd 100644 (file)
@@ -2455,6 +2455,7 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v)
                   " %zd bytes, size of tnode: %zd bytes.\n",
                   LEAF_SIZE, TNODE_SIZE(0));
 
+       rcu_read_lock();
        for (h = 0; h < FIB_TABLE_HASHSZ; h++) {
                struct hlist_head *head = &net->ipv4.fib_table_hash[h];
                struct fib_table *tb;
@@ -2474,7 +2475,9 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v)
                        trie_show_usage(seq, t->stats);
 #endif
                }
+               cond_resched_rcu();
        }
+       rcu_read_unlock();
 
        return 0;
 }