On Tue, Feb 21, 2023 at 09:47:05AM -0800, Roman Gushchin wrote: > > Wouldn't a compiler be within its rights to implement a one byte store as: > > > > load-word > > modify-byte-in-word > > store-word > > > > and if this is a lockless store to a word which has an adjacent byte also > > being modified by another CPU, one of those CPUs can lose its store? > > And WRITE_ONCE would prevent the compiler from implementing the store > > in that way. > > Even then it's not an issue in this case, as we end up with either 0 or 1, > I don't see how we can screw things up here. Thread 1: load word containing oom_group and oom_lock Thread 2: store to oom_lock Thread 1: store word containing oom_group and oom_lock Thread 2's store has been lost.