aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-10-22 20:58:54 -0400
committerKees Cook <keescook@chromium.org>2017-11-02 18:44:09 -0400
commitfd30b717b86dc30ffe25596f8de6542a02ae9401 (patch)
tree0279fa68a4f2eeb88b4904f128f5ba1a01b08f40
parent6082a6e44434a17f194048b7d48df56f148ec6d4 (diff)
rcu: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Lai Jiangshan <jiangshanlai@gmail.com> Signed-off-by: Kees Cook <keescook@chromium.org>
-rw-r--r--kernel/rcu/rcutorture.c4
-rw-r--r--kernel/rcu/tree_plugin.h9
2 files changed, 7 insertions, 6 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 45f2ffbc1e78..96a3cdaeed91 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1076,7 +1076,7 @@ static void rcu_torture_timer_cb(struct rcu_head *rhp)
1076 * counter in the element should never be greater than 1, otherwise, the 1076 * counter in the element should never be greater than 1, otherwise, the
1077 * RCU implementation is broken. 1077 * RCU implementation is broken.
1078 */ 1078 */
1079static void rcu_torture_timer(unsigned long unused) 1079static void rcu_torture_timer(struct timer_list *unused)
1080{ 1080{
1081 int idx; 1081 int idx;
1082 unsigned long started; 1082 unsigned long started;
@@ -1163,7 +1163,7 @@ rcu_torture_reader(void *arg)
1163 VERBOSE_TOROUT_STRING("rcu_torture_reader task started"); 1163 VERBOSE_TOROUT_STRING("rcu_torture_reader task started");
1164 set_user_nice(current, MAX_NICE); 1164 set_user_nice(current, MAX_NICE);
1165 if (irqreader && cur_ops->irq_capable) 1165 if (irqreader && cur_ops->irq_capable)
1166 setup_timer_on_stack(&t, rcu_torture_timer, 0); 1166 timer_setup_on_stack(&t, rcu_torture_timer, 0);
1167 1167
1168 do { 1168 do {
1169 if (irqreader && cur_ops->irq_capable) { 1169 if (irqreader && cur_ops->irq_capable) {
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index e012b9be777e..e85946d9843b 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -2261,9 +2261,11 @@ static void do_nocb_deferred_wakeup_common(struct rcu_data *rdp)
2261} 2261}
2262 2262
2263/* Do a deferred wakeup of rcu_nocb_kthread() from a timer handler. */ 2263/* Do a deferred wakeup of rcu_nocb_kthread() from a timer handler. */
2264static void do_nocb_deferred_wakeup_timer(unsigned long x) 2264static void do_nocb_deferred_wakeup_timer(struct timer_list *t)
2265{ 2265{
2266 do_nocb_deferred_wakeup_common((struct rcu_data *)x); 2266 struct rcu_data *rdp = from_timer(rdp, t, nocb_timer);
2267
2268 do_nocb_deferred_wakeup_common(rdp);
2267} 2269}
2268 2270
2269/* 2271/*
@@ -2327,8 +2329,7 @@ static void __init rcu_boot_init_nocb_percpu_data(struct rcu_data *rdp)
2327 init_swait_queue_head(&rdp->nocb_wq); 2329 init_swait_queue_head(&rdp->nocb_wq);
2328 rdp->nocb_follower_tail = &rdp->nocb_follower_head; 2330 rdp->nocb_follower_tail = &rdp->nocb_follower_head;
2329 raw_spin_lock_init(&rdp->nocb_lock); 2331 raw_spin_lock_init(&rdp->nocb_lock);
2330 setup_timer(&rdp->nocb_timer, do_nocb_deferred_wakeup_timer, 2332 timer_setup(&rdp->nocb_timer, do_nocb_deferred_wakeup_timer, 0);
2331 (unsigned long)rdp);
2332} 2333}
2333 2334
2334/* 2335/*