From ec3a94188df7d28b374868d9a2a0face910e62ab Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 8 Oct 2018 10:41:59 +0200 Subject: [PATCH] x86/fsgsbase/64: Clean up various details So: - use 'extern' consistently for APIs - fix weird header guard - clarify code comments - reorder APIs by type Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Brian Gerst Cc: Chang S. Bae Cc: Dave Hansen Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Markus T Metzger Cc: Peter Zijlstra Cc: Ravi Shankar Cc: Rik van Riel Cc: Thomas Gleixner Cc: linux-kernel@vger.kernel.org Link: http://lkml.kernel.org/r/1537312139-5580-2-git-send-email-chang.seok.bae@intel.com Signed-off-by: Ingo Molnar --- arch/x86/entry/vdso/vgetcpu.c | 1 + arch/x86/include/asm/fsgsbase.h | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/arch/x86/entry/vdso/vgetcpu.c b/arch/x86/entry/vdso/vgetcpu.c index edd214f5264d..f86ab0ae1777 100644 --- a/arch/x86/entry/vdso/vgetcpu.c +++ b/arch/x86/entry/vdso/vgetcpu.c @@ -14,6 +14,7 @@ notrace long __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused) { vdso_read_cpunode(cpu, node); + return 0; } diff --git a/arch/x86/include/asm/fsgsbase.h b/arch/x86/include/asm/fsgsbase.h index 5e9cbcce318a..eb377b6e9eed 100644 --- a/arch/x86/include/asm/fsgsbase.h +++ b/arch/x86/include/asm/fsgsbase.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_FSGSBASE_H -#define _ASM_FSGSBASE_H 1 +#define _ASM_FSGSBASE_H #ifndef __ASSEMBLY__ @@ -9,14 +9,15 @@ #include /* - * Read/write a task's fsbase or gsbase. This returns the value that + * Read/write a task's FSBASE or GSBASE. This returns the value that * the FS/GS base would have (if the task were to be resumed). These - * work on current or on a different non-running task. + * work on the current task or on a non-running (typically stopped + * ptrace child) task. */ -unsigned long x86_fsbase_read_task(struct task_struct *task); -unsigned long x86_gsbase_read_task(struct task_struct *task); -int x86_fsbase_write_task(struct task_struct *task, unsigned long fsbase); -int x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase); +extern unsigned long x86_fsbase_read_task(struct task_struct *task); +extern unsigned long x86_gsbase_read_task(struct task_struct *task); +extern int x86_fsbase_write_task(struct task_struct *task, unsigned long fsbase); +extern int x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase); /* Helper functions for reading/writing FS/GS base */ @@ -25,20 +26,21 @@ static inline unsigned long x86_fsbase_read_cpu(void) unsigned long fsbase; rdmsrl(MSR_FS_BASE, fsbase); + return fsbase; } -void x86_fsbase_write_cpu(unsigned long fsbase); - static inline unsigned long x86_gsbase_read_cpu_inactive(void) { unsigned long gsbase; rdmsrl(MSR_KERNEL_GS_BASE, gsbase); + return gsbase; } -void x86_gsbase_write_cpu_inactive(unsigned long gsbase); +extern void x86_fsbase_write_cpu(unsigned long fsbase); +extern void x86_gsbase_write_cpu_inactive(unsigned long gsbase); #endif /* CONFIG_X86_64 */ -- 2.25.1