aboutsummaryrefslogtreecommitdiff
path: root/lib/locking-selftest.c
diff options
context:
space:
mode:
authorLoic Prylli <loic@myri.com>2007-07-06 02:39:52 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-06 10:23:43 -0700
commitd25c1ba2fa1a9a1a4f68bef8edb0efefd79f0012 (patch)
tree105a72189d2783bfbca1ffda4f5ebf968ac69496 /lib/locking-selftest.c
parent1e2e99f0e4aa6363e8515ed17011c210c8f1b52a (diff)
MTRR: Fix race causing set_mtrr to go into infinite loop
Processors synchronization in set_mtrr requires the .gate field to be set after .count field is properly initialized. Without an explicit barrier, the compiler was reordering those memory stores. That was sometimes causing a processor (in ipi_handler) to see the .gate change and decrement .count before the latter is set by set_mtrr() (which then hangs in a infinite loop with irqs disabled). Signed-off-by: Loic Prylli <loic@myri.com> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/locking-selftest.c')
0 files changed, 0 insertions, 0 deletions