summaryrefslogtreecommitdiffstats
path: root/kernel/module.c
diff options
context:
space:
mode:
authorRadim Krčmář <rkrcmar@redhat.com>2018-05-26 13:45:49 +0200
committerRadim Krčmář <rkrcmar@redhat.com>2018-05-26 13:45:49 +0200
commitf33ecec9bb5199c5a4dd296af604f70273d2636e (patch)
treeba12665fe8f7952a64013bef9125bfac27ff1fda /kernel/module.c
parent0ea3286e2df74c9ec2fadbf91170cd3edd14e3e5 (diff)
parent2d2ccf24939cf369f7473c7e4ea309891be91848 (diff)
downloadblackbird-obmc-linux-f33ecec9bb5199c5a4dd296af604f70273d2636e.tar.gz
blackbird-obmc-linux-f33ecec9bb5199c5a4dd296af604f70273d2636e.zip
Merge branch 'x86/hyperv' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
To resolve conflicts with the PV TLB flush series.
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);
OpenPOWER on IntegriCloud