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
..
2021-11-18 12:05:22 -08:00
2021-11-10 11:22:03 -08:00
2021-11-08 09:15:45 -08:00
2021-11-20 10:35:54 -08:00
2021-11-10 11:22:03 -08:00
2021-11-18 12:05:22 -08:00
2021-11-10 11:22:03 -08:00
2021-11-19 11:40:14 -08:00
2021-11-20 10:55:50 -08:00
2021-11-14 11:37:49 -08:00
2021-11-21 11:25:19 -08:00
2021-11-01 20:05:19 -07:00