diff options
author | Loic Prylli <loic@myri.com> | 2007-07-06 11:39:52 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-06 19:23:43 +0200 |
commit | d25c1ba2fa1a9a1a4f68bef8edb0efefd79f0012 (patch) | |
tree | 105a72189d2783bfbca1ffda4f5ebf968ac69496 /scripts/unifdef.c | |
parent | i386: fix regression, endless loop in ptrace singlestep over an int80 (diff) | |
download | linux-d25c1ba2fa1a9a1a4f68bef8edb0efefd79f0012.tar.xz linux-d25c1ba2fa1a9a1a4f68bef8edb0efefd79f0012.zip |
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 'scripts/unifdef.c')
0 files changed, 0 insertions, 0 deletions