x86, bts: fix wrmsr and spinlock over kmalloc
authorMarkus Metzger <markus.t.metzger@intel.com>
Tue, 25 Nov 2008 07:52:56 +0000 (08:52 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 25 Nov 2008 16:29:02 +0000 (17:29 +0100)
commitde90add30e79261c3b5be68bb0f22d2ef98e8113
tree44c3da676ddb8e160fe1d0e9f29d2ab6a51ed475
parentc4858ffc8f2dc850cb1f609c679b1ac1ad36ef0c
x86, bts: fix wrmsr and spinlock over kmalloc

Impact: fix sleeping-with-spinlock-held bugs/crashes

- Turn a wrmsr to write the DS_AREA MSR into a wrmsrl.
- Use irqsave variants of spinlocks.
- Do not allocate memory while holding spinlocks.

Reported-by: Stephane Eranian <eranian@googlemail.com>
Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Markus Metzger <markus.t.metzger@intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/ds.c