linux/arch/powerpc
Nicholas Piggin 858c93c315 powerpc/watchdog: tighten non-atomic read-modify-write access
Most updates to wd_smp_cpus_pending are under lock except the watchdog
interrupt bit clear.

This can race with non-atomic RMW updates to the mask under lock, which
can happen in two instances:

Firstly, if another CPU detects this one is stuck, removes it from the
mask, mask becomes empty and is re-filled with non-atomic stores. This
is okay because it would re-fill the mask with this CPU's bit clear
anyway (because this CPU is now stuck), so it doesn't matter that the
bit clear update got "lost". Add a comment for this.

Secondly, if another CPU detects a different CPU is stuck and removes it
from the pending mask with a non-atomic store to bytes which also
include the bit of this CPU. This case can result in the bit clear being
lost and the end result being the bit is set. This should be so rare it
hardly matters, but to make things simpler to reason about just avoid
the non-atomic access for that case.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211110025056.2084347-3-npiggin@gmail.com
2021-11-25 11:25:33 +11:00
..
boot powerpc updates for 5.16 2021-11-05 08:15:46 -07:00
configs powerpc/pseries: delete scanlog 2021-11-25 11:25:33 +11:00
crypto
include powerpc/rtas: rtas_busy_delay() improvements 2021-11-25 11:25:33 +11:00
kernel powerpc/watchdog: tighten non-atomic read-modify-write access 2021-11-25 11:25:33 +11:00
kexec powerpc/machdep: Remove stale functions from ppc_md structure 2021-10-22 15:22:05 +11:00
kvm KVM: PPC: Book3S HV P9: Remove subcore HMI handling 2021-11-24 21:09:03 +11:00
lib powerpc/code-patching: Improve verification of patchability 2021-11-25 11:25:32 +11:00
math-emu powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
mm powerpc/code-patching: Improve verification of patchability 2021-11-25 11:25:32 +11:00
net bpf ppc32: Access only if addr is kernel address 2021-11-25 11:25:32 +11:00
perf powerpc/64s: Implement PMU override command line option 2021-11-24 21:08:57 +11:00
platforms powerpc/pseries: delete scanlog 2021-11-25 11:25:33 +11:00
purgatory powerpc/kexec: Don't use .machine ppc64 in trampoline_64.S 2021-04-08 21:17:43 +10:00
sysdev powerpc/tsi108: make EXPORT_SYMBOL follow its function immediately 2021-11-25 11:25:32 +11:00
tools powerpc/head_check: Fix shellcheck errors 2021-08-17 22:52:02 +10:00
xmon powerpc/64s: guard optional TIDR SPR with CPU ftr test 2021-11-24 21:08:56 +11:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig powerpc/64s: Default to 64K pages for 64 bit book3s 2021-10-27 22:31:22 +11:00
Kconfig.debug powerpc/ptdump: Convert powerpc to GENERIC_PTDUMP 2021-08-25 13:35:48 +10:00
Makefile Kbuild updates for v5.16 2021-11-08 09:15:45 -08:00
Makefile.postlink