diff options
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/module.c b/kernel/module.c index ff2d7359a418..b56f3224b161 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1033,6 +1033,8 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user,  	strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module));  	free_module(mod); +	/* someone could wait for the module in add_unformed_module() */ +	wake_up_all(&module_wq);  	return 0;  out:  	mutex_unlock(&module_mutex); @@ -1400,7 +1402,7 @@ static int verify_namespace_is_imported(const struct load_info *info,  	char *imported_namespace;  	namespace = kernel_symbol_namespace(sym); -	if (namespace) { +	if (namespace && namespace[0]) {  		imported_namespace = get_modinfo(info, "import_ns");  		while (imported_namespace) {  			if (strcmp(namespace, imported_namespace) == 0) @@ -3222,7 +3224,7 @@ static int find_module_sections(struct module *mod, struct load_info *info)  #endif  #ifdef CONFIG_FTRACE_MCOUNT_RECORD  	/* sechdrs[0].sh_size is always zero */ -	mod->ftrace_callsites = section_objs(info, "__mcount_loc", +	mod->ftrace_callsites = section_objs(info, FTRACE_CALLSITE_SECTION,  					     sizeof(*mod->ftrace_callsites),  					     &mod->num_ftrace_callsites);  #endif  |