C C-LB+o-sync-sync-o+rl-o-o-rul+rl-o-o-rul.litmus { } P0(int *a, int *b) { int r1; r1 = READ_ONCE(*a); synchronize_rcu(); synchronize_rcu(); WRITE_ONCE(*b, 1); } P1(int *b, int *c) { int r2; rcu_read_lock(); r2 = READ_ONCE(*b); WRITE_ONCE(*c, 1); rcu_read_unlock(); } P2(int *c, int *a) { int r3; rcu_read_lock(); r3 = READ_ONCE(*c); WRITE_ONCE(*a, 1); rcu_read_unlock(); } exists (0:r1=1 /\ 1:r2=1 /\ 2:r3=1)