On Wed, 4 Jan 2023 15:16:26 +0000, Mark Rutland wrote:
The inline assembly for arm64's cmpxchg_double*() implementations use a +Q constraint to hazard against other accesses to the memory location being exchanged. However, the pointer passed to the constraint is a pointer to unsigned long, and thus the hazard only applies to the first 8 bytes of the location.
GCC can take advantage of this, assuming that other portions of the location are unchanged, leading to a number of potential problems.
[...]
Applied to arm64 (for-next/fixes), thanks!
[1/1] arm64: cmpxchg_double*: hazard against entire exchange variable https://git.kernel.org/arm64/c/031af50045ea
Cheers,