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 f0c8f545180d..b750675251e5 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c | |||
| @@ -50,7 +50,8 @@ static struct workqueue_struct *khelper_wq; | |||
| 50 | char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe"; | 50 | char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe"; |
| 51 | 51 | ||
| 52 | /** | 52 | /** |
| 53 | * request_module - try to load a kernel module | 53 | * __request_module - try to load a kernel module |
| 54 | * @wait: wait (or not) for the operation to complete | ||
| 54 | * @fmt: printf style format string for the name of the module | 55 | * @fmt: printf style format string for the name of the module |
| 55 | * @...: arguments as specified in the format string | 56 | * @...: arguments as specified in the format string |
| 56 | * | 57 | * |
| @@ -63,7 +64,7 @@ char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe"; | |||
| 63 | * If module auto-loading support is disabled then this function | 64 | * If module auto-loading support is disabled then this function |
| 64 | * becomes a no-operation. | 65 | * becomes a no-operation. |
| 65 | */ | 66 | */ |
| 66 | int request_module(const char *fmt, ...) | 67 | int __request_module(bool wait, const char *fmt, ...) |
| 67 | { | 68 | { |
| 68 | va_list args; | 69 | va_list args; |
| 69 | char module_name[MODULE_NAME_LEN]; | 70 | char module_name[MODULE_NAME_LEN]; |
| @@ -108,11 +109,12 @@ int request_module(const char *fmt, ...) | |||
| 108 | return -ENOMEM; | 109 | return -ENOMEM; |
| 109 | } | 110 | } |
| 110 | 111 | ||
| 111 | ret = call_usermodehelper(modprobe_path, argv, envp, 1); | 112 | ret = call_usermodehelper(modprobe_path, argv, envp, |
| 113 | wait ? UMH_WAIT_PROC : UMH_WAIT_EXEC); | ||
| 112 | atomic_dec(&kmod_concurrent); | 114 | atomic_dec(&kmod_concurrent); |
| 113 | return ret; | 115 | return ret; |
| 114 | } | 116 | } |
| 115 | EXPORT_SYMBOL(request_module); | 117 | EXPORT_SYMBOL(__request_module); |
| 116 | #endif /* CONFIG_MODULES */ | 118 | #endif /* CONFIG_MODULES */ |
| 117 | 119 | ||
| 118 | struct subprocess_info { | 120 | struct subprocess_info { |
