]> git.baikalelectronics.ru Git - kernel.git/commit
netfilter: nft_fib_netdev: Terminate rule eval if protocol=IPv6 and ipv6 module is...
authorLeonardo Bras <leonardo@linux.ibm.com>
Fri, 30 Aug 2019 18:13:53 +0000 (15:13 -0300)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 3 Sep 2019 20:53:56 +0000 (22:53 +0200)
commit3d70e5b70c12615ce85e7d3e0b869235a86d30e4
tree05f1ede317f6cadcbed2d1f6cdad0a8111384ba1
parent3ac9fdfdeeb2a9214a1dd844f2ec52f6a92e5675
netfilter: nft_fib_netdev: Terminate rule eval if protocol=IPv6 and ipv6 module is disabled

If IPv6 is disabled on boot (ipv6.disable=1), but nft_fib_inet ends up
dealing with a IPv6 packet, it causes a kernel panic in
fib6_node_lookup_1(), crashing in bad_page_fault.

The panic is caused by trying to deference a very low address (0x38
in ppc64le), due to ipv6.fib6_main_tbl = NULL.
BUG: Kernel NULL pointer dereference at 0x00000038

The kernel panic was reproduced in a host that disabled IPv6 on boot and
have to process guest packets (coming from a bridge) using it's ip6tables.

Terminate rule evaluation when packet protocol is IPv6 but the ipv6 module
is not loaded.

Signed-off-by: Leonardo Bras <leonardo@linux.ibm.com>
Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_fib_netdev.c