From: Alexander Duyck Date: Mon, 2 Jan 2017 21:32:54 +0000 (-0800) Subject: ipv4: Do not allow MAIN to be alias for new LOCAL w/ custom rules X-Git-Tag: v4.14-rc1~1751^2~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5350d54f6cd12eaff623e890744c79b700bd3f17;p=platform%2Fkernel%2Flinux-rpi3.git ipv4: Do not allow MAIN to be alias for new LOCAL w/ custom rules In the case of custom rules being present we need to handle the case of the LOCAL table being intialized after the new rule has been added. To address that I am adding a new check so that we can make certain we don't use an alias of MAIN for LOCAL when allocating a new table. Fixes: 0ddcf43d5d4a ("ipv4: FIB Local/MAIN table collapse") Reported-by: Oliver Brunel Signed-off-by: Alexander Duyck Signed-off-by: David S. Miller --- diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 3ff8938..eae0332 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c @@ -85,7 +85,7 @@ struct fib_table *fib_new_table(struct net *net, u32 id) if (tb) return tb; - if (id == RT_TABLE_LOCAL) + if (id == RT_TABLE_LOCAL && !net->ipv4.fib_has_custom_rules) alias = fib_new_table(net, RT_TABLE_MAIN); tb = fib_trie_table(id, alias);