aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2018-05-19 15:20:49 +0200
committerThomas Gleixner <tglx@linutronix.de>2018-05-19 15:20:49 +0200
commit95b5c0a592c712496dce6c1ed772d5f9026b5ed3 (patch)
treeef00485760be3388bafc2eed41da185fb8a4858a /kernel/module.c
parentx86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read() (diff)
parentx86/MCE/AMD: Cache SMCA MISC block addresses (diff)
downloadlinux-rng-95b5c0a592c712496dce6c1ed772d5f9026b5ed3.tar.xz
linux-rng-95b5c0a592c712496dce6c1ed772d5f9026b5ed3.zip
Merge branch 'ras/urgent' into ras/core
Pick up urgent fix as pending patch depends on it.
Diffstat (limited to 'kernel/module.c')
-rw-r--r--kernel/module.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index ce8066b88178..c9bea7f2b43e 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3517,6 +3517,11 @@ static noinline int do_init_module(struct module *mod)
* walking this with preempt disabled. In all the failure paths, we
* call synchronize_sched(), but we don't want to slow down the success
* path, so use actual RCU here.
+ * Note that module_alloc() on most architectures creates W+X page
+ * mappings which won't be cleaned up until do_free_init() runs. Any
+ * code such as mark_rodata_ro() which depends on those mappings to
+ * be cleaned up needs to sync with the queued work - ie
+ * rcu_barrier_sched()
*/
call_rcu_sched(&freeinit->rcu, do_free_init);
mutex_unlock(&module_mutex);