提交 61f0d861 编写于 作者: A Alexander Duyck 提交者: David S. Miller

fib_trie: Fix uninitialized variable warning

The 0-day kernel test infrastructure reported a use of uninitialized
variable warning for local_table due to the fact that the local and main
allocations had been swapped from the original setup.  This change corrects
that by making it so that we free the main table if the local table
allocation fails.

Fixes: 0ddcf43d ("ipv4: FIB Local/MAIN table collapse")
Signed-off-by: NAlexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 6dede75b
...@@ -54,11 +54,11 @@ static int __net_init fib4_rules_init(struct net *net) ...@@ -54,11 +54,11 @@ static int __net_init fib4_rules_init(struct net *net)
main_table = fib_trie_table(RT_TABLE_MAIN, NULL); main_table = fib_trie_table(RT_TABLE_MAIN, NULL);
if (main_table == NULL) if (main_table == NULL)
goto fail; return -ENOMEM;
local_table = fib_trie_table(RT_TABLE_LOCAL, main_table); local_table = fib_trie_table(RT_TABLE_LOCAL, main_table);
if (local_table == NULL) if (local_table == NULL)
return -ENOMEM; goto fail;
hlist_add_head_rcu(&local_table->tb_hlist, hlist_add_head_rcu(&local_table->tb_hlist,
&net->ipv4.fib_table_hash[TABLE_LOCAL_INDEX]); &net->ipv4.fib_table_hash[TABLE_LOCAL_INDEX]);
...@@ -67,7 +67,7 @@ static int __net_init fib4_rules_init(struct net *net) ...@@ -67,7 +67,7 @@ static int __net_init fib4_rules_init(struct net *net)
return 0; return 0;
fail: fail:
fib_free_table(local_table); fib_free_table(main_table);
return -ENOMEM; return -ENOMEM;
} }
#else #else
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册