On Mon, May 08 2023 at 23:19, Peter Zijlstra wrote: > The read side of seqcount_latch consists of: > > do { > seq = raw_read_seqcount_latch(&latch->seq); > ... > } while (read_seqcount_latch_retry(&latch->seq, seq)); > > which is asymmetric in the raw_ department, and sure enough, > read_seqcount_latch_retry() includes (explicit) instrumentation where > raw_read_seqcount_latch() does not. > > This inconsistency becomes a problem when trying to use it from > noinstr code. As such, fix it by renaming and re-implementing > raw_read_seqcount_latch_retry() without the instrumentation. > > Specifically the instrumentation in question is kcsan_atomic_next(0) > in do___read_seqcount_retry(). Loosing this annotation is not a > problem because raw_read_seqcount_latch() does not pass through > kcsan_atomic_next(KCSAN_SEQLOCK_REGION_MAX). > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Reviewed-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>