Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86/fsgsbase/64: Convert the ELF core dump code to the new FSGSBASE helpers

Replace open-coded rdmsr()'s with their <asm/fsgsbase.h> API
counterparts.

No change in functionality intended.

[ mingo: Wrote new changelog. ]

Based-on-code-from: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Markus T Metzger <markus.t.metzger@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Shankar <ravi.v.shankar@intel.com>
Cc: Rik van Riel <riel@surriel.com>
Link: http://lkml.kernel.org/r/1537312139-5580-5-git-send-email-chang.seok.bae@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>

authored by

Chang S. Bae and committed by
Ingo Molnar
824eea38 e696c231

+3 -3
+3 -3
arch/x86/include/asm/elf.h
··· 10 10 #include <asm/ptrace.h> 11 11 #include <asm/user.h> 12 12 #include <asm/auxvec.h> 13 + #include <asm/fsgsbase.h> 13 14 14 15 typedef unsigned long elf_greg_t; 15 16 ··· 206 205 207 206 #define ELF_CORE_COPY_REGS(pr_reg, regs) \ 208 207 do { \ 209 - unsigned long base; \ 210 208 unsigned v; \ 211 209 (pr_reg)[0] = (regs)->r15; \ 212 210 (pr_reg)[1] = (regs)->r14; \ ··· 228 228 (pr_reg)[18] = (regs)->flags; \ 229 229 (pr_reg)[19] = (regs)->sp; \ 230 230 (pr_reg)[20] = (regs)->ss; \ 231 - rdmsrl(MSR_FS_BASE, base); (pr_reg)[21] = base; \ 232 - rdmsrl(MSR_KERNEL_GS_BASE, base); (pr_reg)[22] = base; \ 231 + (pr_reg)[21] = x86_fsbase_read_cpu(); \ 232 + (pr_reg)[22] = x86_gsbase_read_cpu_inactive(); \ 233 233 asm("movl %%ds,%0" : "=r" (v)); (pr_reg)[23] = v; \ 234 234 asm("movl %%es,%0" : "=r" (v)); (pr_reg)[24] = v; \ 235 235 asm("movl %%fs,%0" : "=r" (v)); (pr_reg)[25] = v; \