• Marco Elver's avatar
    seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier · 0b4ba983
    Marco Elver authored
    [ Upstream commit bf07132f ]
    
    This patch proposes to require marked atomic accesses surrounding
    raw_write_seqcount_barrier. We reason that otherwise there is no way to
    guarantee propagation nor atomicity of writes before/after the barrier
    [1]. For example, consider the compiler tears stores either before or
    after the barrier; in this case, readers may observe a partial value,
    and because readers are unaware that writes are going on (writes are not
    in a seq-writer critical section), will complete the seq-reader critical
    section while having observed some partial state.
    [1] https://lwn.net/Articles/793253/
    
    This came up when designing and implementing KCSAN, because KCSAN would
    flag these accesses as data-races. After careful analysis, our reasoning
    as above led us to conclude that the best thing to do is to propose an
    amendment to the raw_seqcount_barrier usage.
    Signed-off-by: default avatarMarco Elver <elver@google.com>
    Acked-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    0b4ba983
seqlock.h 16.5 KB