linux-next/arch/loongarch
Huacai Chen c87e12e0e8 LoongArch: Change __my_cpu_offset definition to avoid mis-optimization
From GCC commit 3f13154553f8546a ("df-scan: remove ad-hoc handling of
global regs in asms"), global registers will no longer be forced to add
to the def-use chain. Then current_thread_info(), current_stack_pointer
and __my_cpu_offset may be lifted out of the loop because they are no
longer treated as "volatile variables".

This optimization is still correct for the current_thread_info() and
current_stack_pointer usages because they are associated to a thread.
However it is wrong for __my_cpu_offset because it is associated to a
CPU rather than a thread: if the thread migrates to a different CPU in
the loop, __my_cpu_offset should be changed.

Change __my_cpu_offset definition to treat it as a "volatile variable",
in order to avoid such a mis-optimization.

Cc: stable@vger.kernel.org
Reported-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Reported-by: Miao Wang <shankerwangmiao@gmail.com>
Signed-off-by: Xing Li <lixing@loongson.cn>
Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
Signed-off-by: Rui Wang <wangrui@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-03-19 15:50:34 +08:00
..
boot LoongArch: dts: Minor whitespace cleanup 2024-02-23 14:36:31 +08:00
configs LoongArch changes for v6.8 2024-01-19 13:30:49 -08:00
crypto crypto: loongarch/crc32 - remove redundant setting of alignmask to 0 2023-10-27 18:04:24 +08:00
include LoongArch: Change __my_cpu_offset definition to avoid mis-optimization 2024-03-19 15:50:34 +08:00
kernel LoongArch: Add kernel livepatching support 2024-03-11 22:23:47 +08:00
kvm LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
lib LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
mm LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
net LoongArch: BPF: Prevent out-of-bounds memory access 2024-01-17 12:43:13 +08:00
pci LoongArch: Add FDT booting support from efi system table 2022-12-14 08:41:53 +08:00
power LoongArch: Export some arch-specific pm interfaces 2023-06-29 20:58:44 +08:00
vdso LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
Kbuild LoongArch: Allow device trees be built into the kernel 2024-01-17 12:43:00 +08:00
Kconfig LoongArch: Select HAVE_ARCH_USERFAULTFD_MINOR in Kconfig 2024-03-19 15:50:34 +08:00
Kconfig.debug LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
Makefile LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00