On Fri, Jan 24, 2020 at 01:34:23PM +0800, Gao Xiang wrote: > On Thu, Jan 23, 2020 at 09:16:01PM -0800, Eric Biggers wrote: > > [] > > > So we need READ_ONCE() to ensure that a consistent value is used. > > By the way, my understanding is all pointer could be accessed > atomicly guaranteed by compiler. In my opinion, we generally > use READ_ONCE() on pointers for other uses (such as, avoid > accessing a variable twice due to compiler optimization and > it will break some logic potentially or need some data > dependency barrier...) > > Thanks, > Gao Xiang But that *is* why we need READ_ONCE() here. Without it, there's no guarantee that the compiler doesn't load the variable twice. Please read: https://github.com/google/ktsan/wiki/READ_ONCE-and-WRITE_ONCE - Eric