diff options
Diffstat (limited to 'init')
-rw-r--r-- | init/main.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/init/main.c b/init/main.c index b28673087ac..a490ffecb7b 100644 --- a/init/main.c +++ b/init/main.c @@ -794,11 +794,11 @@ static void run_init_process(const char *init_filename) kernel_execve(init_filename, argv_init, envp_init); } -/* This is a non __init function. Force it to be noinline otherwise gcc - * makes it inline to init() and it becomes part of init.text section - */ -static noinline int init_post(void) +static void __init kernel_init_freeable(void); + +static int __ref kernel_init(void *unused) { + kernel_init_freeable(); /* need to finish all async __init code before freeing the memory */ async_synchronize_full(); free_initmem(); @@ -835,7 +835,7 @@ static noinline int init_post(void) "See Linux Documentation/init.txt for guidance."); } -static int __init kernel_init(void * unused) +static void __init kernel_init_freeable(void) { /* * Wait until kthreadd is all set-up. @@ -890,7 +890,4 @@ static int __init kernel_init(void * unused) * we're essentially up and running. Get rid of the * initmem segments and start the user-mode stuff.. */ - - init_post(); - return 0; } |