aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/rcutiny_plugin.h7
-rw-r--r--kernel/rcutorture.c3
-rw-r--r--kernel/rcutree.c7
-rw-r--r--kernel/rcutree_plugin.h14
4 files changed, 18 insertions, 13 deletions
diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h
index 116725b5edfb..918fd1e8509c 100644
--- a/kernel/rcutiny_plugin.h
+++ b/kernel/rcutiny_plugin.h
@@ -350,8 +350,9 @@ static int rcu_initiate_boost(void)
350 rcu_preempt_ctrlblk.boost_tasks = 350 rcu_preempt_ctrlblk.boost_tasks =
351 rcu_preempt_ctrlblk.gp_tasks; 351 rcu_preempt_ctrlblk.gp_tasks;
352 invoke_rcu_callbacks(); 352 invoke_rcu_callbacks();
353 } else 353 } else {
354 RCU_TRACE(rcu_initiate_boost_trace()); 354 RCU_TRACE(rcu_initiate_boost_trace());
355 }
355 return 1; 356 return 1;
356} 357}
357 358
@@ -778,9 +779,9 @@ void synchronize_rcu_expedited(void)
778 rpcp->exp_tasks = NULL; 779 rpcp->exp_tasks = NULL;
779 780
780 /* Wait for tail of ->blkd_tasks list to drain. */ 781 /* Wait for tail of ->blkd_tasks list to drain. */
781 if (!rcu_preempted_readers_exp()) 782 if (!rcu_preempted_readers_exp()) {
782 local_irq_restore(flags); 783 local_irq_restore(flags);
783 else { 784 } else {
784 rcu_initiate_boost(); 785 rcu_initiate_boost();
785 local_irq_restore(flags); 786 local_irq_restore(flags);
786 wait_event(sync_rcu_preempt_exp_wq, 787 wait_event(sync_rcu_preempt_exp_wq,
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index c279ee920947..155fb129b641 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -408,8 +408,9 @@ rcu_torture_cb(struct rcu_head *p)
408 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) { 408 if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
409 rp->rtort_mbtest = 0; 409 rp->rtort_mbtest = 0;
410 rcu_torture_free(rp); 410 rcu_torture_free(rp);
411 } else 411 } else {
412 cur_ops->deferred_free(rp); 412 cur_ops->deferred_free(rp);
413 }
413} 414}
414 415
415static int rcu_no_completed(void) 416static int rcu_no_completed(void)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 117218a43724..f280e542e3e9 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -892,8 +892,9 @@ static void __note_new_gpnum(struct rcu_state *rsp, struct rcu_node *rnp, struct
892 if (rnp->qsmask & rdp->grpmask) { 892 if (rnp->qsmask & rdp->grpmask) {
893 rdp->qs_pending = 1; 893 rdp->qs_pending = 1;
894 rdp->passed_quiesce = 0; 894 rdp->passed_quiesce = 0;
895 } else 895 } else {
896 rdp->qs_pending = 0; 896 rdp->qs_pending = 0;
897 }
897 zero_cpu_stall_ticks(rdp); 898 zero_cpu_stall_ticks(rdp);
898 } 899 }
899} 900}
@@ -2130,9 +2131,9 @@ void synchronize_sched_expedited(void)
2130 put_online_cpus(); 2131 put_online_cpus();
2131 2132
2132 /* No joy, try again later. Or just synchronize_sched(). */ 2133 /* No joy, try again later. Or just synchronize_sched(). */
2133 if (trycount++ < 10) 2134 if (trycount++ < 10) {
2134 udelay(trycount * num_online_cpus()); 2135 udelay(trycount * num_online_cpus());
2135 else { 2136 } else {
2136 synchronize_sched(); 2137 synchronize_sched();
2137 return; 2138 return;
2138 } 2139 }
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index a9194d5606c4..7f3244c0df01 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -390,8 +390,9 @@ void rcu_read_unlock_special(struct task_struct *t)
390 rnp->grphi, 390 rnp->grphi,
391 !!rnp->gp_tasks); 391 !!rnp->gp_tasks);
392 rcu_report_unblock_qs_rnp(rnp, flags); 392 rcu_report_unblock_qs_rnp(rnp, flags);
393 } else 393 } else {
394 raw_spin_unlock_irqrestore(&rnp->lock, flags); 394 raw_spin_unlock_irqrestore(&rnp->lock, flags);
395 }
395 396
396#ifdef CONFIG_RCU_BOOST 397#ifdef CONFIG_RCU_BOOST
397 /* Unboost if we were boosted. */ 398 /* Unboost if we were boosted. */
@@ -757,9 +758,9 @@ sync_rcu_preempt_exp_init(struct rcu_state *rsp, struct rcu_node *rnp)
757 int must_wait = 0; 758 int must_wait = 0;
758 759
759 raw_spin_lock_irqsave(&rnp->lock, flags); 760 raw_spin_lock_irqsave(&rnp->lock, flags);
760 if (list_empty(&rnp->blkd_tasks)) 761 if (list_empty(&rnp->blkd_tasks)) {
761 raw_spin_unlock_irqrestore(&rnp->lock, flags); 762 raw_spin_unlock_irqrestore(&rnp->lock, flags);
762 else { 763 } else {
763 rnp->exp_tasks = rnp->blkd_tasks.next; 764 rnp->exp_tasks = rnp->blkd_tasks.next;
764 rcu_initiate_boost(rnp, flags); /* releases rnp->lock */ 765 rcu_initiate_boost(rnp, flags); /* releases rnp->lock */
765 must_wait = 1; 766 must_wait = 1;
@@ -803,9 +804,9 @@ void synchronize_rcu_expedited(void)
803 * expedited grace period for us, just leave. 804 * expedited grace period for us, just leave.
804 */ 805 */
805 while (!mutex_trylock(&sync_rcu_preempt_exp_mutex)) { 806 while (!mutex_trylock(&sync_rcu_preempt_exp_mutex)) {
806 if (trycount++ < 10) 807 if (trycount++ < 10) {
807 udelay(trycount * num_online_cpus()); 808 udelay(trycount * num_online_cpus());
808 else { 809 } else {
809 synchronize_rcu(); 810 synchronize_rcu();
810 return; 811 return;
811 } 812 }
@@ -2093,8 +2094,9 @@ static void rcu_prepare_for_idle(int cpu)
2093 if (rcu_cpu_has_callbacks(cpu)) { 2094 if (rcu_cpu_has_callbacks(cpu)) {
2094 trace_rcu_prep_idle("More callbacks"); 2095 trace_rcu_prep_idle("More callbacks");
2095 invoke_rcu_core(); 2096 invoke_rcu_core();
2096 } else 2097 } else {
2097 trace_rcu_prep_idle("Callbacks drained"); 2098 trace_rcu_prep_idle("Callbacks drained");
2099 }
2098} 2100}
2099 2101
2100/* 2102/*