From: Daniel Lezcano Date: Fri, 7 Dec 2007 08:40:34 +0000 (-0800) Subject: [IPV6]: Make fib6_init to return an error code. X-Git-Tag: v2.6.25-rc1~1162^2~1192 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=d63bddbe90c4fd924b2155ca92a879393d856170;p=linux-2.6-omap-h63xx.git [IPV6]: Make fib6_init to return an error code. If there is an error in the initialization function, nothing is followed up to the caller. So I add a return value to be set for the init function. Signed-off-by: Daniel Lezcano Acked-by: Benjamin Thery Signed-off-by: David S. Miller --- diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 4cefcffe773..5d39ce92afc 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -224,7 +224,7 @@ extern void fib6_run_gc(unsigned long dummy); extern void fib6_gc_cleanup(void); -extern void fib6_init(void); +extern int fib6_init(void); extern void fib6_rules_init(void); extern void fib6_rules_cleanup(void); diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 31b60a02512..c100b44f2b8 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -1473,16 +1473,24 @@ void fib6_run_gc(unsigned long dummy) spin_unlock_bh(&fib6_gc_lock); } -void __init fib6_init(void) +int __init fib6_init(void) { + int ret; fib6_node_kmem = kmem_cache_create("fib6_nodes", sizeof(struct fib6_node), 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); - fib6_tables_init(); - __rtnl_register(PF_INET6, RTM_GETROUTE, NULL, inet6_dump_fib); + ret = __rtnl_register(PF_INET6, RTM_GETROUTE, NULL, inet6_dump_fib); + if (ret) + goto out_kmem_cache_create; +out: + return ret; + +out_kmem_cache_create: + kmem_cache_destroy(fib6_node_kmem); + goto out; } void fib6_gc_cleanup(void)