x86/nmi/64: Remove asm code that saves CR2
Now that do_nmi saves CR2, we don't need to save it in asm. Signed-off-by: Andy Lutomirski <luto@kernel.org> Reviewed-by: Steven Rostedt <rostedt@goodmis.org> Acked-by: Borislav Petkov <bp@suse.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
9d05041679
commit
0e181bb581
|
@ -1415,28 +1415,11 @@ end_repeat_nmi:
|
|||
*/
|
||||
call paranoid_entry
|
||||
|
||||
/*
|
||||
* Save off the CR2 register. If we take a page fault in the NMI then
|
||||
* it could corrupt the CR2 value. If the NMI preempts a page fault
|
||||
* handler before it was able to read the CR2 register, and then the
|
||||
* NMI itself takes a page fault, the page fault that was preempted
|
||||
* will read the information from the NMI page fault and not the
|
||||
* origin fault. Save it off and restore it if it changes.
|
||||
* Use the r12 callee-saved register.
|
||||
*/
|
||||
movq %cr2, %r12
|
||||
|
||||
/* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
|
||||
movq %rsp, %rdi
|
||||
movq $-1, %rsi
|
||||
call do_nmi
|
||||
|
||||
/* Did the NMI take a page fault? Restore cr2 if it did */
|
||||
movq %cr2, %rcx
|
||||
cmpq %rcx, %r12
|
||||
je 1f
|
||||
movq %r12, %cr2
|
||||
1:
|
||||
testl %ebx, %ebx /* swapgs needed? */
|
||||
jnz nmi_restore
|
||||
nmi_swapgs:
|
||||
|
|
Loading…
Reference in New Issue