History

module: Clean up ro/nx after early module load failures

The commit 4982223e51e8 module: set nx before marking module MODULE_STATE_COMING. introduced a regression: if a module fails to parse its arguments or if mod_sysfs_setup fails, then the module's memory will be freed while still read-only. Anything that reuses that memory will crash as soon as it tries to write to it.

Andy Lutomirski committed 12 years ago

Commit ff7e0051 parent c9d26421 file · +5 −0Browse files

Showing the changes to kernel (1 of 1 file). Show all

Unified · Split

kernel/module.c+5−0
@@ -3304,6 +3304,11 @@ static int load_module(struct load_info *info, const char __user *uargs, · 3303 unmodified lines
3304 mutex_lock(&module_mutex);3304 mutex_lock(&module_mutex);
3305 module_bug_cleanup(mod);3305 module_bug_cleanup(mod);
3306 mutex_unlock(&module_mutex);3306 mutex_unlock(&module_mutex);
3307
3308 /* we can't deallocate the module until we clear memory protection */
3309 unset_module_init_ro_nx(mod);
3310 unset_module_core_ro_nx(mod);
3311
3307 ddebug_cleanup:3312 ddebug_cleanup:
3308 dynamic_debug_remove(info->debug);3313 dynamic_debug_remove(info->debug);
3309 synchronize_sched();3314 synchronize_sched();