public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 8/9] jrcu: fix broken rcu_barrier
@ 2011-03-14  3:50 Joe Korty
  2011-03-14  8:47 ` Paul E. McKenney
  0 siblings, 1 reply; 6+ messages in thread
From: Joe Korty @ 2011-03-14  3:50 UTC (permalink / raw)
  To: paulmck
  Cc: fweisbec, peterz, laijs, mathieu.desnoyers, dhowells, loic.minier,
	dhaval.giani, tglx, josh, houston.jim, andi, linux-kernel

jrcu: fix bug in rcu_barrier.

It is not equivalent to synchronize_rcu.  But it
can be implemented by a pair of synchronize_rcu's,
so do so.

Thanks go to Paul E McKenney for finding this.

Signed-off-by: Joe Korty <joe.korty@ccur.com>

Index: b/kernel/jrcu.c
===================================================================
--- a/kernel/jrcu.c
+++ b/kernel/jrcu.c
@@ -183,7 +183,7 @@ void rcu_note_might_resched(void)
 }
 EXPORT_SYMBOL(rcu_note_might_resched);
 
-void rcu_barrier(void)
+void synchronize_sched(void)
 {
 	struct rcu_synchronize rcu;
 
@@ -196,6 +196,13 @@ void rcu_barrier(void)
 	atomic_inc(&rcu_stats.nbarriers);
 
 }
+EXPORT_SYMBOL_GPL(synchronize_sched);
+
+void rcu_barrier(void)
+{
+	synchronize_sched();
+	synchronize_sched();
+}
 EXPORT_SYMBOL_GPL(rcu_barrier);
 
 void rcu_force_quiescent_state(void)
Index: b/include/linux/jrcu.h
===================================================================
--- a/include/linux/jrcu.h
+++ b/include/linux/jrcu.h
@@ -39,12 +39,13 @@ extern void rcu_barrier(void);
 #define rcu_barrier_sched			rcu_barrier
 #define rcu_barrier_bh				rcu_barrier
 
-#define synchronize_rcu				rcu_barrier
-#define synchronize_sched			rcu_barrier
-#define synchronize_sched_expedited		rcu_barrier
-#define synchronize_rcu_bh			rcu_barrier
-#define synchronize_rcu_expedited		rcu_barrier
-#define synchronize_rcu_bh_expedited		rcu_barrier
+extern void synchronize_sched(void);
+
+#define synchronize_rcu				synchronize_sched
+#define synchronize_sched_expedited		synchronize_sched
+#define synchronize_rcu_bh			synchronize_sched
+#define synchronize_rcu_expedited		synchronize_sched
+#define synchronize_rcu_bh_expedited		synchronize_sched
 
 #define rcu_init(cpu)				do { } while (0)
 #define rcu_init_sched()			do { } while (0)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-24  0:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-14  3:50 [PATCH 8/9] jrcu: fix broken rcu_barrier Joe Korty
2011-03-14  8:47 ` Paul E. McKenney
2011-03-14 22:09   ` Joe Korty
2011-03-23  6:35     ` Paul E. McKenney
2011-03-23 13:46       ` Joe Korty
2011-03-24  0:23         ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox