Re: [PATCH] mm: change memcg->oom_group access with atomic operations

From: Matthew Wilcox
Date: Tue Feb 21 2023 - 13:18:19 EST


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.