[PATCH 1/1] UBUNTU: SAUCE: ensure root is ready before running usermodehelpers in it

Stefan Bader stefan.bader at canonical.com
Mon Jan 10 18:47:05 UTC 2011


The contents seem to be reasonable. Only I probably would like a bit more
verbosity of explanation in the commit message. It reads a bit like only having
the sob in...

Otherwise
Acked-by: Stefan Bader <stefan.bader at canonical.com>

On 01/10/2011 12:06 PM, Andy Whitcroft wrote:
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
> ---
>  include/linux/init.h |    2 --
>  include/linux/kmod.h |    4 ++++
>  init/initramfs.c     |    6 ++++++
>  init/main.c          |    2 +-
>  4 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/include/linux/init.h b/include/linux/init.h
> index f3fbb95..f37d7c6 100644
> --- a/include/linux/init.h
> +++ b/include/linux/init.h
> @@ -216,8 +216,6 @@ extern int 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 6efd7a7..989fa3b 100644
> --- a/include/linux/kmod.h
> +++ b/include/linux/kmod.h
> @@ -83,6 +83,8 @@ int call_usermodehelper_exec(struct subprocess_info *info, enum umh_wait wait);
>     to call call_usermodehelper_exec */
>  void call_usermodehelper_freeinfo(struct subprocess_info *info);
>  
> +extern void populate_rootfs_wait(void);
> +
>  static inline int
>  call_usermodehelper_fns(char *path, char **argv, char **envp,
>  			enum umh_wait wait,
> @@ -92,6 +94,8 @@ call_usermodehelper_fns(char *path, char **argv, char **envp,
>  	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)
> diff --git a/init/initramfs.c b/init/initramfs.c
> index 8fed7ea..e7a4ef0 100644
> --- a/init/initramfs.c
> +++ b/init/initramfs.c
> @@ -571,6 +571,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,
> diff --git a/init/main.c b/init/main.c
> index 3fe1a78..605735c 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -930,7 +930,7 @@ static int __init kernel_init(void * unused)
>  	 * 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





More information about the kernel-team mailing list