summaryrefslogtreecommitdiff
path: root/lib/syscall.c
diff options
context:
space:
mode:
authorPekka Paalanen <pq@iki.fi>2009-02-24 21:44:15 +0200
committerIngo Molnar <mingo@elte.hu>2009-03-02 10:20:37 +0100
commit340430c572f7b2b275d39965e88bafa71693cb23 (patch)
tree4be609589171a4bd8c5744178625454c6e5efa3a /lib/syscall.c
parent3e39aa156a24ce386da378784edd0f748c770087 (diff)
x86 mmiotrace: fix race with release_kmmio_fault_page()
There was a theoretical possibility to a race between arming a page in post_kmmio_handler() and disarming the page in release_kmmio_fault_page(): cpu0 cpu1 ------------------------------------------------------------------ mmiotrace shutdown enter release_kmmio_fault_page fault on the page disarm the page disarm the page handle the MMIO access re-arm the page put the page on release list remove_kmmio_fault_pages() fault on the page page not known to mmiotrace fall back to do_page_fault() *KABOOM* (This scenario also shows the double disarm case which is allowed.) Fixed by acquiring kmmio_lock in post_kmmio_handler() and checking if the page is being released from mmiotrace. Signed-off-by: Pekka Paalanen <pq@iki.fi> Cc: Stuart Bennett <stuart@freedesktop.org> Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'lib/syscall.c')
0 files changed, 0 insertions, 0 deletions