x86/percpu: Correct PER_CPU_VAR() usage to include symbol and its addend
authorUros Bizjak <ubizjak@gmail.com>
Tue, 17 Oct 2023 16:27:32 +0000 (18:27 +0200)
committerIngo Molnar <mingo@kernel.org>
Fri, 20 Oct 2023 10:19:51 +0000 (12:19 +0200)
The PER_CPU_VAR() macro should be applied to a symbol and its addend.
Inconsistent usage is currently harmless, but needs to be corrected
before %rip-relative addressing is introduced to the PER_CPU_VAR() macro.

No functional changes intended.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org
Cc: Brian Gerst <brgerst@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Sean Christopherson <seanjc@google.com>
arch/x86/entry/calling.h
arch/x86/entry/entry_32.S
arch/x86/entry/entry_64.S
arch/x86/kernel/head_64.S

index f6907627172ba96d1be4976e65b843f294886327..47368ab0bda0edd7635e0540525a43d34ba3a1ed 100644 (file)
@@ -173,7 +173,7 @@ For 32-bit we have the following conventions - kernel is built with
 .endm
 
 #define THIS_CPU_user_pcid_flush_mask   \
-       PER_CPU_VAR(cpu_tlbstate) + TLB_STATE_user_pcid_flush_mask
+       PER_CPU_VAR(cpu_tlbstate + TLB_STATE_user_pcid_flush_mask)
 
 .macro SWITCH_TO_USER_CR3_NOSTACK scratch_reg:req scratch_reg2:req
        ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
index 6e6af42e044a20cf0aec1115406c546ebcb3bbab..d4e094b2c877f3f1c32d7436a1af9ea293689ee3 100644 (file)
 .macro CHECK_AND_APPLY_ESPFIX
 #ifdef CONFIG_X86_ESPFIX32
 #define GDT_ESPFIX_OFFSET (GDT_ENTRY_ESPFIX_SS * 8)
-#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + GDT_ESPFIX_OFFSET
+#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page + GDT_ESPFIX_OFFSET)
 
        ALTERNATIVE     "jmp .Lend_\@", "", X86_BUG_ESPFIX
 
index b940e928c808848142b2eec708149ccfca7aaa47..6d236652fceb6df8f09f3291378dea7311b3da12 100644 (file)
@@ -252,7 +252,7 @@ SYM_FUNC_START(__switch_to_asm)
 
 #ifdef CONFIG_STACKPROTECTOR
        movq    TASK_stack_canary(%rsi), %rbx
-       movq    %rbx, PER_CPU_VAR(fixed_percpu_data) + FIXED_stack_canary
+       movq    %rbx, PER_CPU_VAR(fixed_percpu_data + FIXED_stack_canary)
 #endif
 
        /*
index ea6995920b7aa920f7a604d22f750123491fba4b..bfe5ec2f4f83fe17de6334d2ee80b8a0d9743200 100644 (file)
@@ -449,7 +449,7 @@ SYM_CODE_START(soft_restart_cpu)
        UNWIND_HINT_END_OF_STACK
 
        /* Find the idle task stack */
-       movq    PER_CPU_VAR(pcpu_hot) + X86_current_task, %rcx
+       movq    PER_CPU_VAR(pcpu_hot + X86_current_task), %rcx
        movq    TASK_threadsp(%rcx), %rsp
 
        jmp     .Ljump_to_C_code