|
@@ -692,8 +692,7 @@ sys_delete_module(const char __user *name_user, unsigned int flags)
|
|
|
}
|
|
|
|
|
|
/* If it has an init func, it must have an exit func to unload */
|
|
|
- if ((mod->init != NULL && mod->exit == NULL)
|
|
|
- || mod->unsafe) {
|
|
|
+ if (mod->init && !mod->exit) {
|
|
|
forced = try_force_unload(flags);
|
|
|
if (!forced) {
|
|
|
/* This module can't be removed */
|
|
@@ -741,11 +740,6 @@ static void print_unload_info(struct seq_file *m, struct module *mod)
|
|
|
seq_printf(m, "%s,", use->module_which_uses->name);
|
|
|
}
|
|
|
|
|
|
- if (mod->unsafe) {
|
|
|
- printed_something = 1;
|
|
|
- seq_printf(m, "[unsafe],");
|
|
|
- }
|
|
|
-
|
|
|
if (mod->init != NULL && mod->exit == NULL) {
|
|
|
printed_something = 1;
|
|
|
seq_printf(m, "[permanent],");
|
|
@@ -2011,15 +2005,10 @@ sys_init_module(void __user *umod,
|
|
|
buggy refcounters. */
|
|
|
mod->state = MODULE_STATE_GOING;
|
|
|
synchronize_sched();
|
|
|
- if (mod->unsafe)
|
|
|
- printk(KERN_ERR "%s: module is now stuck!\n",
|
|
|
- mod->name);
|
|
|
- else {
|
|
|
- module_put(mod);
|
|
|
- mutex_lock(&module_mutex);
|
|
|
- free_module(mod);
|
|
|
- mutex_unlock(&module_mutex);
|
|
|
- }
|
|
|
+ module_put(mod);
|
|
|
+ mutex_lock(&module_mutex);
|
|
|
+ free_module(mod);
|
|
|
+ mutex_unlock(&module_mutex);
|
|
|
return ret;
|
|
|
}
|
|
|
|