aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
Diffstat (limited to 'init')
-rw-r--r--init/do_mounts.c2
-rw-r--r--init/main.c5
2 files changed, 6 insertions, 1 deletions
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 5efca73b39f9..708105e163df 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -13,6 +13,7 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/fs.h> 14#include <linux/fs.h>
15#include <linux/initrd.h> 15#include <linux/initrd.h>
16#include <linux/async.h>
16 17
17#include <linux/nfs_fs.h> 18#include <linux/nfs_fs.h>
18#include <linux/nfs_fs_sb.h> 19#include <linux/nfs_fs_sb.h>
@@ -372,6 +373,7 @@ void __init prepare_namespace(void)
372 /* wait for the known devices to complete their probing */ 373 /* wait for the known devices to complete their probing */
373 while (driver_probe_done() != 0) 374 while (driver_probe_done() != 0)
374 msleep(100); 375 msleep(100);
376 async_synchronize_full();
375 377
376 md_run_setup(); 378 md_run_setup();
377 379
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
687static int initcall_debug; 688int initcall_debug;
688core_param(initcall_debug, initcall_debug, bool, 0644); 689core_param(initcall_debug, initcall_debug, bool, 0644);
689 690
690int do_one_initcall(initcall_t fn) 691int do_one_initcall(initcall_t fn)
@@ -785,6 +786,8 @@ static void run_init_process(char *init_filename)
785 */ 786 */
786static noinline int init_post(void) 787static 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();