|
@@ -3304,6 +3304,11 @@ static int load_module(struct load_info *info, const char __user *uargs,
|
|
mutex_lock(&module_mutex);
|
|
mutex_lock(&module_mutex);
|
|
module_bug_cleanup(mod);
|
|
module_bug_cleanup(mod);
|
|
mutex_unlock(&module_mutex);
|
|
mutex_unlock(&module_mutex);
|
|
|
|
+
|
|
|
|
+ /* we can't deallocate the module until we clear memory protection */
|
|
|
|
+ unset_module_init_ro_nx(mod);
|
|
|
|
+ unset_module_core_ro_nx(mod);
|
|
|
|
+
|
|
ddebug_cleanup:
|
|
ddebug_cleanup:
|
|
dynamic_debug_remove(info->debug);
|
|
dynamic_debug_remove(info->debug);
|
|
synchronize_sched();
|
|
synchronize_sched();
|