diff options
-rw-r--r-- | include/linux/init.h | 2 | ||||
-rw-r--r-- | include/linux/kmod.h | 2 | ||||
-rw-r--r-- | init/initramfs.c | 7 | ||||
-rw-r--r-- | init/main.c | 2 | ||||
-rw-r--r-- | kernel/kmod.c | 2 |
5 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/init.h b/include/linux/init.h index ef222c37f18..8326ee50b3b 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -236,8 +236,6 @@ extern bool initcall_debug; static initcall_t __initcall_##fn \ __used __section(.security_initcall.init) = fn -extern struct list_head populate_rootfs_domain; - struct obs_kernel_param { const char *str; int (*setup_func)(char *); diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 5398d580707..6f571b1be39 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h @@ -71,6 +71,8 @@ call_usermodehelper_fns(char *path, char **argv, char **envp, int wait, int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); +void populate_rootfs_wait(void); + static inline int call_usermodehelper(char *path, char **argv, char **envp, int wait) { diff --git a/init/initramfs.c b/init/initramfs.c index 1ae8873570c..c5a41234666 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -19,6 +19,7 @@ #include <linux/syscalls.h> #include <linux/utime.h> #include <linux/async.h> +#include <linux/export.h> static __initdata char *message; static void __init error(char *x) @@ -582,6 +583,12 @@ static void __init clean_rootfs(void) LIST_HEAD(populate_rootfs_domain); +void populate_rootfs_wait(void) +{ + async_synchronize_full_domain(&populate_rootfs_domain); +} +EXPORT_SYMBOL(populate_rootfs_wait); + static void __init async_populate_rootfs(void) { char *err = unpack_to_rootfs(__initramfs_start, __initramfs_size); diff --git a/init/main.c b/init/main.c index ccd91c5ba7a..b3e7e7b283d 100644 --- a/init/main.c +++ b/init/main.c @@ -904,7 +904,7 @@ static void __init kernel_init_freeable(void) * We need to ensure that the filesystem is ready by this point, wait for * async_populate_rootfs to complete. */ - async_synchronize_full_domain(&populate_rootfs_domain); + populate_rootfs_wait(); /* * check if there is an early userspace init. If yes, let it do all diff --git a/kernel/kmod.c b/kernel/kmod.c index 1c317e38683..130fb9254a4 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -621,6 +621,8 @@ int call_usermodehelper_fns( struct subprocess_info *info; gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL; + populate_rootfs_wait(); + info = call_usermodehelper_setup(path, argv, envp, gfp_mask); if (info == NULL) |