From a59b39496dd1a1f67caec5f50a7b41931681f84f Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Wed, 30 Jul 2008 12:49:02 -0700 Subject: [PATCH] --- yaml --- r: 108225 b: refs/heads/master c: 59f9415ffb9759e950d775f4c400f747b332cc02 h: refs/heads/master i: 108223: 86e16d2206ef86848a3af20ed694767d0f4cedfa v: v3 --- [refs] | 2 +- trunk/include/linux/init.h | 1 + trunk/init/main.c | 6 ++++-- trunk/kernel/module.c | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index dcd6b23d8b96..673fd3b9aa3f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4bceba417a795b78a5146e3f85291cb7bb2402ef +refs/heads/master: 59f9415ffb9759e950d775f4c400f747b332cc02 diff --git a/trunk/include/linux/init.h b/trunk/include/linux/init.h index 11b84e106053..93538b696e3d 100644 --- a/trunk/include/linux/init.h +++ b/trunk/include/linux/init.h @@ -139,6 +139,7 @@ extern initcall_t __con_initcall_start[], __con_initcall_end[]; extern initcall_t __security_initcall_start[], __security_initcall_end[]; /* Defined in init/main.c */ +extern int do_one_initcall(initcall_t fn); extern char __initdata boot_command_line[]; extern char *saved_command_line; extern unsigned int reset_devices; diff --git a/trunk/init/main.c b/trunk/init/main.c index 0bc7e167bf45..f6f7042331dc 100644 --- a/trunk/init/main.c +++ b/trunk/init/main.c @@ -691,7 +691,7 @@ asmlinkage void __init start_kernel(void) rest_init(); } -static int __initdata initcall_debug; +static int initcall_debug; static int __init initcall_debug_setup(char *str) { @@ -700,7 +700,7 @@ static int __init initcall_debug_setup(char *str) } __setup("initcall_debug", initcall_debug_setup); -static void __init do_one_initcall(initcall_t fn) +int do_one_initcall(initcall_t fn) { int count = preempt_count(); ktime_t t0, t1, delta; @@ -740,6 +740,8 @@ static void __init do_one_initcall(initcall_t fn) print_fn_descriptor_symbol(KERN_WARNING "initcall %s", fn); printk(" returned with %s\n", msgbuf); } + + return result; } diff --git a/trunk/kernel/module.c b/trunk/kernel/module.c index 61d212120df4..08864d257eb0 100644 --- a/trunk/kernel/module.c +++ b/trunk/kernel/module.c @@ -2288,7 +2288,7 @@ sys_init_module(void __user *umod, /* Start the module */ if (mod->init != NULL) - ret = mod->init(); + ret = do_one_initcall(mod->init); if (ret < 0) { /* Init routine failed: abort. Try to protect us from buggy refcounters. */