Messages in this thread | | | Date | Tue, 3 Jul 2018 00:35:25 +0000 | From | Christopher Lameter <> | Subject | Re: [RFC PATCH for 4.18] rseq: use __u64 for rseq_cs fields, validate user inputs |
| |
On Mon, 2 Jul 2018, Mathieu Desnoyers wrote:
> > > > Platforms with 32 bit word size only guarantee atomicity of a 32 bit > > write or RMV instruction. > > > > Special instructions may exist on a platform to perform 64 bit atomic > > updates. We use cmpxchg64 f.e. on Intel 32 bit platforms to guarantee > > atomicity8. > > > > So use the macros that we have to guarantee 64 bit ops and you should be > > fine. See linux/arch/x86/include/asm/atomic64_32.h > > We are talking about user-space here. What we need is a single instruction > atomic store, similar to what WRITE_ONCE() does in the kernel. The discussion > is about whether doing the user-space equivalent of a WRITE_ONCE() to a u64 > on a 32-bit architecture should be considered to provide single-copy atomicity > on the low 32 bits.
Right. You would need to make this work for userspace. atomic64_32.h is a good reference as to which instructions provide 64 bit atomicity on 32 bit platforms.
| |