diff options
| author | Paul E. McKenney <[email protected]> | 2008-03-19 17:00:57 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2008-03-19 18:53:36 -0700 |
| commit | ae66be9b71b12f16b84129860d06bbfe37fbec51 (patch) | |
| tree | 5bf1d1722f0d83bb4c30621b031437a141a15af1 /scripts/patch-kernel | |
| parent | b691da35ba94d5fa0a32589d99b6546be2bf4cfa (diff) | |
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 <[email protected]>
Acked-by: Steven Rostedt <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts/patch-kernel')
0 files changed, 0 insertions, 0 deletions