From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Jessica Yu <jeyu@kernel.org>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
jiangshanlai@gmail.com, dipankar@in.ibm.com,
akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org
Subject: Re: [PATCH tip/core/rcu 24/41] modules: Replace synchronize_sched() and call_rcu_sched()
Date: Mon, 12 Nov 2018 08:31:39 -0800 [thread overview]
Message-ID: <20181112163139.GN4170@linux.ibm.com> (raw)
In-Reply-To: <20181112124852.GA11833@linux-8ccs>
On Mon, Nov 12, 2018 at 01:48:52PM +0100, Jessica Yu wrote:
> +++ Paul E. McKenney [11/11/18 11:43 -0800]:
> >Now that synchronize_rcu() waits for preempt-disable regions of code
> >as well as RCU read-side critical sections, synchronize_sched() can
> >be replaced by synchronize_rcu(). Similarly, call_rcu_sched() can be
> >replaced by call_rcu(). This commit therefore makes these changes.
> >
> >Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
> >Cc: Jessica Yu <jeyu@kernel.org>
>
> Acked-by: Jessica Yu <jeyu@kernel.org>
Applied, thank you!
Thanx, Paul
> Thanks!
>
> >---
> >kernel/module.c | 14 +++++++-------
> >1 file changed, 7 insertions(+), 7 deletions(-)
> >
> >diff --git a/kernel/module.c b/kernel/module.c
> >index 49a405891587..99b46c32d579 100644
> >--- a/kernel/module.c
> >+++ b/kernel/module.c
> >@@ -2159,7 +2159,7 @@ static void free_module(struct module *mod)
> > /* Remove this module from bug list, this uses list_del_rcu */
> > module_bug_cleanup(mod);
> > /* Wait for RCU-sched synchronizing before releasing mod->list and buglist. */
> >- synchronize_sched();
> >+ synchronize_rcu();
> > mutex_unlock(&module_mutex);
> >
> > /* This may be empty, but that's OK */
> >@@ -3507,15 +3507,15 @@ static noinline int do_init_module(struct module *mod)
> > /*
> > * We want to free module_init, but be aware that kallsyms may be
> > * walking this with preempt disabled. In all the failure paths, we
> >- * call synchronize_sched(), but we don't want to slow down the success
> >+ * call synchronize_rcu(), 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()
> >+ * rcu_barrier()
> > */
> >- call_rcu_sched(&freeinit->rcu, do_free_init);
> >+ call_rcu(&freeinit->rcu, do_free_init);
> > mutex_unlock(&module_mutex);
> > wake_up_all(&module_wq);
> >
> >@@ -3526,7 +3526,7 @@ static noinline int do_init_module(struct module *mod)
> >fail:
> > /* Try to protect us from buggy refcounters. */
> > mod->state = MODULE_STATE_GOING;
> >- synchronize_sched();
> >+ synchronize_rcu();
> > module_put(mod);
> > blocking_notifier_call_chain(&module_notify_list,
> > MODULE_STATE_GOING, mod);
> >@@ -3819,7 +3819,7 @@ static int load_module(struct load_info *info, const char __user *uargs,
> > ddebug_cleanup:
> > ftrace_release_mod(mod);
> > dynamic_debug_remove(mod, info->debug);
> >- synchronize_sched();
> >+ synchronize_rcu();
> > kfree(mod->args);
> > free_arch_cleanup:
> > module_arch_cleanup(mod);
> >@@ -3834,7 +3834,7 @@ static int load_module(struct load_info *info, const char __user *uargs,
> > mod_tree_remove(mod);
> > wake_up_all(&module_wq);
> > /* Wait for RCU-sched synchronizing before releasing mod->list. */
> >- synchronize_sched();
> >+ synchronize_rcu();
> > mutex_unlock(&module_mutex);
> > free_module:
> > /* Free lock-classes; relies on the preceding sync_rcu() */
> >--
> >2.17.1
> >
>
next prev parent reply other threads:[~2018-11-12 16:31 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-11 19:41 [PATCH tip/core/rcu 0/41] More RCU flavor consolidation cleanup for v4.21/v5.0 Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 01/41] rcu: Remove unused rcu_state externs Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 02/41] rcu: Fix rcu_{node,data} comments about gp_seq_needed Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 03/41] rcu: Eliminate synchronize_rcu_mult() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 04/41] rcu: Consolidate the RCU update functions invoked by sync.c Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 05/41] sched/membarrier: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 06/41] sparc/oprofile: Convert timer_stop() to use synchronize_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 07/41] s390/mm: Convert tlb_table_flush() to use call_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 08/41] powerpc: Convert hugepd_free() " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 09/41] crypto/pcrypt: Replace synchronize_rcu_bh() with synchronize_rcu() Paul E. McKenney
2018-11-16 5:56 ` Herbert Xu
2018-11-27 17:19 ` Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 10/41] drivers/ipmi: Replace synchronize_sched() " Paul E. McKenney
2018-11-12 15:38 ` Corey Minyard
2018-11-12 16:04 ` Paul E. McKenney
2018-11-12 16:15 ` Corey Minyard
2018-11-12 16:28 ` Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 11/41] ethernet/sis: " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 12/41] ethernet/realtek: " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 13/41] ethernet/intel/ixgbe: " Paul E. McKenney
2018-11-13 16:54 ` [Intel-wired-lan] " Bowers, AndrewX
2018-11-11 19:43 ` [PATCH tip/core/rcu 14/41] drivers/vhost: Replace synchronize_rcu_bh() " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 15/41] cpufreq/intel_pstate: Replace synchronize_sched() " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 16/41] cpufreq/cpufreq_governor: " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 17/41] fs/file: " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 18/41] tracing: Replace synchronize_sched() and call_rcu_sched() Paul E. McKenney
2018-11-12 2:09 ` Steven Rostedt
2018-11-11 19:43 ` [PATCH tip/core/rcu 19/41] main: Replace rcu_barrier_sched() with rcu_barrier() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 20/41] kprobes: eplace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-12 3:00 ` Masami Hiramatsu
2018-11-12 3:19 ` Paul E. McKenney
2018-11-13 18:08 ` Masami Hiramatsu
2018-11-13 19:22 ` Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 21/41] lockdep: Replace " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 22/41] sched/membarrier: " Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 23/41] sched: Replace " Paul E. McKenney
2018-11-12 0:12 ` Peter Zijlstra
2018-11-12 0:45 ` Paul E. McKenney
2018-11-12 0:53 ` Peter Zijlstra
2018-11-12 1:47 ` Paul E. McKenney
2018-11-12 2:07 ` Peter Zijlstra
2018-11-12 2:24 ` Paul E. McKenney
2018-11-12 9:00 ` Peter Zijlstra
2018-11-12 13:28 ` Paul E. McKenney
2018-11-12 18:17 ` Peter Zijlstra
2018-11-12 20:20 ` Steven Rostedt
2018-11-12 22:21 ` Paul E. McKenney
2018-11-26 19:59 ` Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 24/41] modules: Replace synchronize_sched() and call_rcu_sched() Paul E. McKenney
2018-11-12 12:48 ` Jessica Yu
2018-11-12 16:31 ` Paul E. McKenney [this message]
2018-11-11 19:43 ` [PATCH tip/core/rcu 25/41] workqueue: Replace call_rcu_sched() with call_rcu() Paul E. McKenney
2018-11-13 15:48 ` Tejun Heo
2018-11-13 19:21 ` Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 26/41] events: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 27/41] percpu-refcount: Replace call_rcu_sched() with call_rcu() Paul E. McKenney
2018-11-13 15:48 ` Tejun Heo
2018-11-11 19:43 ` [PATCH tip/core/rcu 28/41] slab: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 29/41] mm: Replace call_rcu_sched() with call_rcu() Paul E. McKenney
2018-11-11 19:43 ` [PATCH tip/core/rcu 30/41] netfilter: Replace call_rcu_bh(), rcu_barrier_bh(), and synchronize_rcu_bh() Paul E. McKenney
2018-12-01 11:35 ` Pablo Neira Ayuso
2018-11-11 19:44 ` [PATCH tip/core/rcu 31/41] net/sched: Replace call_rcu_bh() and rcu_barrier_bh() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 32/41] net/core: Replace call_rcu_bh() and synchronize_rcu_bh() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 33/41] net/bridge: Replace call_rcu_bh() and rcu_barrier_bh() Paul E. McKenney
2018-11-13 0:29 ` Nikolay Aleksandrov
2018-11-11 19:44 ` [PATCH tip/core/rcu 34/41] percpu-rwsem: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-13 15:49 ` Tejun Heo
2018-11-11 19:44 ` [PATCH tip/core/rcu 35/41] types: Remove call_rcu_bh() and call_rcu_sched() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 36/41] cgroups: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-13 15:50 ` Tejun Heo
2018-11-11 19:44 ` [PATCH tip/core/rcu 37/41] livepatch: " Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 38/41] net/core/skmsg: Replace call_rcu_sched() with call_rcu() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 39/41] net/decnet: Replace rcu_barrier_bh() with rcu_barrier() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 40/41] tools/kernel.h: Replace synchronize_sched() with synchronize_rcu() Paul E. McKenney
2018-11-11 19:44 ` [PATCH tip/core/rcu 41/41] rcutorture/formal: " Paul E. McKenney
2018-11-12 14:07 ` [PATCH tip/core/rcu 0/41] More RCU flavor consolidation cleanup for v4.21/v5.0 Mathieu Desnoyers
2018-11-12 16:01 ` Paul E. McKenney
2018-11-12 21:40 ` Sasha Levin
2018-11-12 22:16 ` Paul E. McKenney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181112163139.GN4170@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=jeyu@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox