On Tue, Nov 12, 2019 at 1:48 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > On Tue, 12 Nov 2019, Linus Torvalds wrote: > > > Honestly, my preferred model would have been to just add a comment, > > and have the reporting tool know to then just ignore it. So something > > like > > > > + // Benign data-race on min_flt > > tsk->min_flt++; > > perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address); > > > > for the case that Eric mentioned - the tool would trigger on > > "data-race", and the rest of the comment could/should be for humans. > > Without making the code uglier, but giving the potential for a nice > > leghibl.e explanation instead of a completely illegible "let's > > randomly use WRITE_ONCE() here" or something like that. > > Just to be perfectly clear, then: > > Your feeling is that we don't need to tell the compiler anything at all > about these races, because if a compiler generates code that is > non-robust against such things then you don't want to use it for the > kernel. > I would prefer some kind of explicit marking, instead of a comment. Even if we prefer having a sane compiler, having these clearly annotated can help code readability quite a lot. /* * To use when we are ok with minor races... bla bla bla */ static void inline add_relaxed(int *p, int x) { x += __atomic_load_n(p, __ATOMIC_RELAXED); __atomic_store_n(p, x, __ATOMIC_RELAXED); } The actual implementation might depend on the compiler, and revert to something without any constraint for old compilers : *p += x;