x86/fsgsbase: Replace static_cpu_has() with boot_cpu_has()
authorBorislav Petkov <bp@suse.de>
Tue, 18 Aug 2020 10:28:31 +0000 (12:28 +0200)
committerBorislav Petkov <bp@suse.de>
Mon, 24 Aug 2020 16:18:32 +0000 (18:18 +0200)
ptrace and prctl() are not really fast paths to warrant the use of
static_cpu_has() and cause alternatives patching for no good reason.
Replace with boot_cpu_has() which is simple and fast enough.

No functional changes.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20200818103715.32736-1-bp@alien8.de
arch/x86/include/asm/fsgsbase.h
arch/x86/kernel/process_64.c

index d552646..35cff5f 100644 (file)
@@ -57,7 +57,7 @@ static inline unsigned long x86_fsbase_read_cpu(void)
 {
        unsigned long fsbase;
 
-       if (static_cpu_has(X86_FEATURE_FSGSBASE))
+       if (boot_cpu_has(X86_FEATURE_FSGSBASE))
                fsbase = rdfsbase();
        else
                rdmsrl(MSR_FS_BASE, fsbase);
@@ -67,7 +67,7 @@ static inline unsigned long x86_fsbase_read_cpu(void)
 
 static inline void x86_fsbase_write_cpu(unsigned long fsbase)
 {
-       if (static_cpu_has(X86_FEATURE_FSGSBASE))
+       if (boot_cpu_has(X86_FEATURE_FSGSBASE))
                wrfsbase(fsbase);
        else
                wrmsrl(MSR_FS_BASE, fsbase);
index 9afefe3..df342be 100644 (file)
@@ -407,7 +407,7 @@ unsigned long x86_gsbase_read_cpu_inactive(void)
 {
        unsigned long gsbase;
 
-       if (static_cpu_has(X86_FEATURE_FSGSBASE)) {
+       if (boot_cpu_has(X86_FEATURE_FSGSBASE)) {
                unsigned long flags;
 
                local_irq_save(flags);
@@ -422,7 +422,7 @@ unsigned long x86_gsbase_read_cpu_inactive(void)
 
 void x86_gsbase_write_cpu_inactive(unsigned long gsbase)
 {
-       if (static_cpu_has(X86_FEATURE_FSGSBASE)) {
+       if (boot_cpu_has(X86_FEATURE_FSGSBASE)) {
                unsigned long flags;
 
                local_irq_save(flags);
@@ -439,7 +439,7 @@ unsigned long x86_fsbase_read_task(struct task_struct *task)
 
        if (task == current)
                fsbase = x86_fsbase_read_cpu();
-       else if (static_cpu_has(X86_FEATURE_FSGSBASE) ||
+       else if (boot_cpu_has(X86_FEATURE_FSGSBASE) ||
                 (task->thread.fsindex == 0))
                fsbase = task->thread.fsbase;
        else
@@ -454,7 +454,7 @@ unsigned long x86_gsbase_read_task(struct task_struct *task)
 
        if (task == current)
                gsbase = x86_gsbase_read_cpu_inactive();
-       else if (static_cpu_has(X86_FEATURE_FSGSBASE) ||
+       else if (boot_cpu_has(X86_FEATURE_FSGSBASE) ||
                 (task->thread.gsindex == 0))
                gsbase = task->thread.gsbase;
        else