linux-samsung-r9q2/include
Nathan Chancellor 093d9b240a percpu: Fix self-assignment of __old in raw_cpu_generic_try_cmpxchg()
After commit c5c0ba953b ("percpu: Add {raw,this}_cpu_try_cmpxchg()"),
clang built ARCH=arm and ARCH=arm64 kernels with CONFIG_INIT_STACK_NONE
started panicking on boot in alloc_vmap_area():

  [    0.000000] kernel BUG at mm/vmalloc.c:1638!
  [    0.000000] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
  [    0.000000] Modules linked in:
  [    0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.4.0-rc2-ARCH+ #1
  [    0.000000] Hardware name: linux,dummy-virt (DT)
  [    0.000000] pstate: 200000c9 (nzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  [    0.000000] pc : alloc_vmap_area+0x7ec/0x7f8
  [    0.000000] lr : alloc_vmap_area+0x7e8/0x7f8

Compiling mm/vmalloc.c with W=2 reveals an instance of -Wshadow, which
helps uncover that through macro expansion, '__old = *(ovalp)' in
raw_cpu_generic_try_cmpxchg() can become '__old = *(&__old)' through
raw_cpu_generic_cmpxchg(), which results in garbage being assigned to
the inner __old and the cmpxchg not working properly.

Add an extra underscore to __old in raw_cpu_generic_try_cmpxchg() so
that there is no more self-assignment, which resolves the panics.

Closes: https://github.com/ClangBuiltLinux/linux/issues/1868
Fixes: c5c0ba953b ("percpu: Add {raw,this}_cpu_try_cmpxchg()")
Debugged-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230607-fix-shadowing-in-raw_cpu_generic_try_cmpxchg-v1-1-8f0a3d930d43@kernel.org
2023-06-08 10:28:39 +02:00
..
acpi Power management updates for 6.4-rc1 2023-04-25 18:44:10 -07:00
asm-generic percpu: Fix self-assignment of __old in raw_cpu_generic_try_cmpxchg() 2023-06-08 10:28:39 +02:00
clocksource KVM: arm64: timers: Use CNTPOFF_EL2 to offset the physical timer 2023-03-30 19:01:09 +01:00
crypto cyrpto/b128ops: Remove struct u128 2023-06-05 09:36:35 +02:00
drm Merge tag 'drm-misc-fixes-2023-05-11' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes 2023-05-12 05:32:36 +10:00
dt-bindings - mailbox api: allow direct registration to a channel 2023-05-07 10:17:33 -07:00
keys
kunit kunit: increase KUNIT_LOG_SIZE to 2048 bytes 2023-03-29 18:55:41 -06:00
kvm s390: 2023-05-01 12:06:20 -07:00
linux locking/atomic: scripts: generate kerneldoc comments 2023-06-05 09:57:23 +02:00
math-emu
media media: i2c: Drop unused sr030pc30 camera sensor driver 2023-04-15 09:56:49 +01:00
memory
misc
net bonding: fix send_peer_notif overflow 2023-05-10 09:27:20 +01:00
pcmcia
ras
rdma RDMA: Add ib_virt_dma_to_page() 2023-04-16 11:08:07 +03:00
rv
scsi Driver core changes for 6.4-rc1 2023-04-27 11:53:57 -07:00
soc Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
sound ASoC: Updates for v6.4 2023-04-24 15:15:31 +02:00
target Merge patch series "target: TMF and recovery fixes" 2023-03-24 17:39:15 -04:00
trace NFSD 6.4 Release Notes 2023-04-29 11:04:14 -07:00
uapi types: Introduce [us]128 2023-06-05 09:36:35 +02:00
ufs SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
vdso
video Merge tag 'drm-misc-next-2023-03-07' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2023-03-14 12:18:54 +10:00
xen ACPI: processor: Fix evaluating _PDC method when running as Xen dom0 2023-03-22 19:36:31 +01:00