aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-06-16 04:12:19 -0400
committerDavid S. Miller <davem@davemloft.net>2012-06-16 04:12:19 -0400
commite8803b6c387129059e04d9e14d49efda250a7361 (patch)
tree147fe0ff12046cabcb3a4c39d07a751b79707ddb /net/ipv6/route.c
parent2a0c451ade8e1783c5d453948289e4a978d417c9 (diff)
Revert "ipv6: Prevent access to uninitialized fib_table_hash via /proc/net/ipv6_route"
This reverts commit 2a0c451ade8e1783c5d453948289e4a978d417c9. It causes crashes, because now ip6_null_entry is used before it is initialized. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index dc60bf585966..999a982ad3fd 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -3018,13 +3018,9 @@ int __init ip6_route_init(void)
3018 if (ret) 3018 if (ret)
3019 goto out_kmem_cache; 3019 goto out_kmem_cache;
3020 3020
3021 ret = fib6_init();
3022 if (ret)
3023 goto out_dst_entries;
3024
3025 ret = register_pernet_subsys(&ip6_route_net_ops); 3021 ret = register_pernet_subsys(&ip6_route_net_ops);
3026 if (ret) 3022 if (ret)
3027 goto out_fib6_init; 3023 goto out_dst_entries;
3028 3024
3029 ip6_dst_blackhole_ops.kmem_cachep = ip6_dst_ops_template.kmem_cachep; 3025 ip6_dst_blackhole_ops.kmem_cachep = ip6_dst_ops_template.kmem_cachep;
3030 3026
@@ -3039,13 +3035,13 @@ int __init ip6_route_init(void)
3039 init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; 3035 init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
3040 init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); 3036 init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
3041 #endif 3037 #endif
3042 ret = fib6_init_late(); 3038 ret = fib6_init();
3043 if (ret) 3039 if (ret)
3044 goto out_register_subsys; 3040 goto out_register_subsys;
3045 3041
3046 ret = xfrm6_init(); 3042 ret = xfrm6_init();
3047 if (ret) 3043 if (ret)
3048 goto out_fib6_init_late; 3044 goto out_fib6_init;
3049 3045
3050 ret = fib6_rules_init(); 3046 ret = fib6_rules_init();
3051 if (ret) 3047 if (ret)
@@ -3068,12 +3064,10 @@ fib6_rules_init:
3068 fib6_rules_cleanup(); 3064 fib6_rules_cleanup();
3069xfrm6_init: 3065xfrm6_init:
3070 xfrm6_fini(); 3066 xfrm6_fini();
3071out_fib6_init_late:
3072 fib6_cleanup_late();
3073out_register_subsys:
3074 unregister_pernet_subsys(&ip6_route_net_ops);
3075out_fib6_init: 3067out_fib6_init:
3076 fib6_gc_cleanup(); 3068 fib6_gc_cleanup();
3069out_register_subsys:
3070 unregister_pernet_subsys(&ip6_route_net_ops);
3077out_dst_entries: 3071out_dst_entries:
3078 dst_entries_destroy(&ip6_dst_blackhole_ops); 3072 dst_entries_destroy(&ip6_dst_blackhole_ops);
3079out_kmem_cache: 3073out_kmem_cache: