Paul E. McKenney
ae66be9b71
rcu: fix misplaced mb() in rcu_enter/exit_nohz()
...
In the process of writing up the mechanical proof of correctness for the
dynticks/preemptable-RCU interface, I noticed misplaced memory barriers in
rcu_enter_nohz() and rcu_exit_nohz().
This patch puts them in the right place and adds a comment. The key thing to
keep in mind is that rcu_enter_nohz() is -exiting- the mode that can legally
execute RCU read-side critical sections.
The memory barrier must be between any potential RCU read-side critical
sections and the increment of the per-CPU dynticks_progress_counter, and thus
must come -before- this increment. And vice versa for rcu_exit_nohz().
The locking in the scheduler is probably saving us for the moment.
Also, switch to smp_mb() - we don't need a barrier for uniprocessor kernels.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
Acked-by: Steven Rostedt <srostedt@redhat.com >
Cc: Nick Piggin <nickpiggin@yahoo.com.au >
Cc: Oleg Nesterov <oleg@tv-sign.ru >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2008-03-19 18:53:36 -07:00
..
2008-02-08 09:22:32 -08:00
2008-02-08 13:30:02 -08:00
2008-03-10 16:41:06 -07:00
2008-02-14 21:17:08 -08:00
2008-03-04 16:35:18 -08:00
2008-02-20 20:11:49 -05:00
2008-02-10 18:11:16 -05:00
2008-03-10 16:42:26 -07:00
2008-02-08 09:22:30 -08:00
2008-02-14 02:43:39 -05:00
2008-02-19 10:04:00 +01:00
2008-02-24 00:27:33 -05:00
2008-02-08 09:22:38 -08:00
2008-02-14 21:17:08 -08:00
2008-02-19 10:04:00 +01:00
2008-03-04 11:18:17 +01:00
2008-02-13 16:21:18 -08:00
2008-03-04 16:35:12 -08:00
2008-02-23 17:13:24 -08:00
2008-02-09 23:24:09 +01:00
2008-03-04 16:35:12 -08:00
2008-02-14 20:58:05 -08:00
2008-02-26 18:42:44 -08:00
2008-02-14 00:09:55 -05:00
2008-02-11 20:48:29 -08:00
2008-02-08 15:33:33 -08:00
2008-02-14 21:17:09 -08:00
2008-02-14 21:17:08 -08:00
2008-03-04 14:47:06 -08:00
2008-03-04 16:35:12 -08:00
2008-02-08 02:10:01 +00:00
2008-02-11 11:06:35 -05:00
2008-02-08 02:09:56 +00:00
2008-03-04 10:16:46 -07:00
2008-02-08 09:22:24 -08:00
2008-02-08 09:22:37 -08:00
2008-02-08 09:22:30 -08:00
2008-02-07 09:02:26 -08:00
2008-02-29 08:06:37 -08:00
2008-02-07 08:42:30 -08:00
2008-02-07 18:04:10 -06:00
2008-02-13 16:21:19 -08:00
2008-03-07 11:11:13 -08:00
2008-03-14 09:49:57 -07:00
2008-02-25 16:54:37 -05:00
2008-02-10 01:11:44 -05:00
2008-02-13 16:21:18 -08:00
2008-03-10 16:33:33 -07:00
2008-02-14 21:13:33 -08:00
2008-02-19 10:04:00 +01:00
2008-02-23 17:12:15 -08:00
2008-03-12 12:34:37 -07:00
2008-02-13 16:21:18 -08:00
2008-03-04 16:35:10 -08:00
2008-02-29 18:46:50 +01:00
2008-02-07 08:42:34 -08:00
2008-02-19 01:41:26 +01:00
2008-02-11 13:01:51 +01:00
2008-02-10 10:48:03 +01:00
2008-02-13 16:21:18 -08:00
2008-02-07 20:39:44 -05:00
2008-02-24 20:03:42 +01:00
2008-02-11 09:20:50 -08:00
2008-02-23 20:09:11 -08:00
2008-02-19 21:00:18 +01:00
2008-02-07 12:57:44 -08:00
2008-02-13 16:21:18 -08:00
2008-02-19 10:04:00 +01:00
2008-03-04 16:35:17 -08:00
2008-02-08 09:22:26 -08:00
2008-02-08 09:22:23 -08:00
2008-02-13 16:21:18 -08:00
2008-02-07 08:42:33 -08:00
2008-02-07 08:42:34 -08:00
2008-02-08 09:22:29 -08:00
2008-03-17 09:03:05 +01:00
2008-02-08 09:22:41 -08:00
2008-03-04 16:35:11 -08:00
2008-02-14 22:08:30 +01:00
2008-03-04 15:19:40 +02:00
2008-03-03 11:22:25 +02:00
2008-02-24 00:27:33 -05:00
2008-02-13 16:21:18 -08:00
2008-02-26 14:03:47 +09:00
2008-03-04 16:35:14 -08:00
2008-03-04 16:35:15 -08:00
2008-03-10 18:01:18 -07:00
2008-03-04 16:35:12 -08:00
2008-03-12 12:34:37 -07:00
2008-02-14 20:58:04 -08:00
2008-02-13 16:21:19 -08:00
2008-02-13 16:21:18 -08:00
2008-02-08 09:22:31 -08:00
2008-02-14 21:13:33 -08:00
2008-02-08 09:22:41 -08:00
2008-02-15 07:33:07 -08:00
2008-02-27 12:21:18 -08:00
2008-03-04 12:28:49 -08:00
2008-03-07 14:35:37 -05:00
2008-02-21 16:40:15 -08:00
2008-02-13 16:21:18 -08:00
2008-02-14 21:13:33 -08:00
2008-03-10 18:01:19 -07:00
2008-03-17 08:26:44 -04:00
2008-02-07 23:11:56 -08:00
2008-02-08 09:22:23 -08:00
2008-02-13 16:21:18 -08:00
2008-02-23 10:40:04 -08:00
2008-03-13 10:09:27 +11:00
2008-02-08 09:22:31 -08:00
2008-03-07 11:08:40 -08:00
2008-02-08 09:22:26 -08:00
2008-02-07 08:42:28 -08:00
2008-02-29 18:46:50 +01:00
2008-03-19 18:53:36 -07:00
2008-02-08 09:22:41 -08:00
2008-02-13 16:21:18 -08:00
2008-03-19 04:27:53 +01:00
2008-03-06 08:40:53 +11:00
2008-02-14 21:17:08 -08:00
2008-02-07 08:42:34 -08:00
2008-02-13 16:21:18 -08:00
2008-02-26 14:52:45 +09:00
2008-02-07 08:42:30 -08:00
2008-02-08 09:22:41 -08:00
2008-02-08 09:22:27 -08:00
2008-02-18 20:52:13 -08:00
2008-03-06 16:21:49 -08:00
2008-03-03 12:22:32 -08:00
2008-03-04 16:35:13 -08:00
2008-03-04 16:35:13 -08:00
2008-02-08 09:22:31 -08:00
2008-02-07 08:42:34 -08:00
2008-02-13 16:21:18 -08:00
2008-02-09 11:08:33 -08:00
2008-02-09 04:01:48 -05:00
2008-03-10 18:01:18 -07:00
2008-03-09 08:42:57 +01:00
2008-02-08 09:22:37 -08:00
2008-03-09 08:42:57 +01:00
2008-03-19 04:27:53 +01:00
2008-02-08 09:22:39 -08:00
2008-02-08 09:22:34 -08:00
2008-02-08 09:22:36 -08:00
2008-03-04 14:57:43 -08:00
2008-02-08 09:22:23 -08:00
2008-02-18 12:18:05 -03:00
2008-02-18 12:18:05 -03:00
2008-03-17 22:58:21 +11:00
2008-02-29 08:36:13 -08:00
2008-02-13 16:21:18 -08:00
2008-02-13 16:21:18 -08:00