diff options
Diffstat (limited to 'kernel/kmod.c')
| -rw-r--r-- | kernel/kmod.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/kmod.c b/kernel/kmod.c index f0c8f545180..b750675251e 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -50,7 +50,8 @@ static struct workqueue_struct *khelper_wq;  char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe";  /** - * request_module - try to load a kernel module + * __request_module - try to load a kernel module + * @wait: wait (or not) for the operation to complete   * @fmt: printf style format string for the name of the module   * @...: arguments as specified in the format string   * @@ -63,7 +64,7 @@ char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe";   * If module auto-loading support is disabled then this function   * becomes a no-operation.   */ -int request_module(const char *fmt, ...) +int __request_module(bool wait, const char *fmt, ...)  {  	va_list args;  	char module_name[MODULE_NAME_LEN]; @@ -108,11 +109,12 @@ int request_module(const char *fmt, ...)  		return -ENOMEM;  	} -	ret = call_usermodehelper(modprobe_path, argv, envp, 1); +	ret = call_usermodehelper(modprobe_path, argv, envp, +			wait ? UMH_WAIT_PROC : UMH_WAIT_EXEC);  	atomic_dec(&kmod_concurrent);  	return ret;  } -EXPORT_SYMBOL(request_module); +EXPORT_SYMBOL(__request_module);  #endif /* CONFIG_MODULES */  struct subprocess_info {  |