ipv6: Prevent access to uninitialized fib_table_hash via /proc/net/ipv6_route
authorThomas Graf <tgraf@suug.ch>
Thu, 14 Jun 2012 23:00:17 +0000 (23:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Jun 2012 22:30:15 +0000 (15:30 -0700)
commit2a0c451ade8e1783c5d453948289e4a978d417c9
tree136dbbaf024f45200848ec371368668872545a2e
parent0f6efff92524c65fc3ef41c8b936c526580f1db0
ipv6: Prevent access to uninitialized fib_table_hash via /proc/net/ipv6_route

/proc/net/ipv6_route reflects the contents of fib_table_hash. The proc
handler is installed in ip6_route_net_init() whereas fib_table_hash is
allocated in fib6_net_init() _after_ the proc handler has been installed.

This opens up a short time frame to access fib_table_hash with its pants
down.

fib6_init() as a whole can't be moved to an earlier position as it also
registers the rtnetlink message handlers which should be registered at
the end. Therefore split it into fib6_init() which is run early and
fib6_init_late() to register the rtnetlink message handlers.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Reviewed-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip6_fib.h
net/ipv6/ip6_fib.c
net/ipv6/route.c