diff options
Diffstat (limited to 'init/main.c')
| -rw-r--r-- | init/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/init/main.c b/init/main.c index b5a892c68375..f66715d8a853 100644 --- a/init/main.c +++ b/init/main.c | |||
| @@ -62,6 +62,7 @@ | |||
| 62 | #include <linux/signal.h> | 62 | #include <linux/signal.h> |
| 63 | #include <linux/idr.h> | 63 | #include <linux/idr.h> |
| 64 | #include <linux/ftrace.h> | 64 | #include <linux/ftrace.h> |
| 65 | #include <linux/async.h> | ||
| 65 | #include <trace/boot.h> | 66 | #include <trace/boot.h> |
| 66 | 67 | ||
| 67 | #include <asm/io.h> | 68 | #include <asm/io.h> |
| @@ -684,7 +685,7 @@ asmlinkage void __init start_kernel(void) | |||
| 684 | rest_init(); | 685 | rest_init(); |
| 685 | } | 686 | } |
| 686 | 687 | ||
| 687 | static int initcall_debug; | 688 | int initcall_debug; |
| 688 | core_param(initcall_debug, initcall_debug, bool, 0644); | 689 | core_param(initcall_debug, initcall_debug, bool, 0644); |
| 689 | 690 | ||
| 690 | int do_one_initcall(initcall_t fn) | 691 | int do_one_initcall(initcall_t fn) |
| @@ -785,6 +786,8 @@ static void run_init_process(char *init_filename) | |||
| 785 | */ | 786 | */ |
| 786 | static noinline int init_post(void) | 787 | static noinline int init_post(void) |
| 787 | { | 788 | { |
| 789 | /* need to finish all async __init code before freeing the memory */ | ||
| 790 | async_synchronize_full(); | ||
| 788 | free_initmem(); | 791 | free_initmem(); |
| 789 | unlock_kernel(); | 792 | unlock_kernel(); |
| 790 | mark_rodata_ro(); | 793 | mark_rodata_ro(); |
