C RM-broken

(*
 * Result: DEADLOCK
 *
 * This litmus test demonstrates that the old "roach motel" approach
 * to locking, where code can be freely moved into critical sections,
 * cannot be used in the Linux kernel.
 *)

{
	int x;
	atomic_t y;
}

P0(int *x, atomic_t *y, spinlock_t *lck)
{
	int r2;

	spin_lock(lck);
	r2 = atomic_inc_return(y);
	WRITE_ONCE(*x, 1);
	spin_unlock(lck);
}

P1(int *x, atomic_t *y, spinlock_t *lck)
{
	int r0;
	int r1;
	int r2;

	spin_lock(lck);
	r0 = READ_ONCE(*x);
	r1 = READ_ONCE(*x);
	r2 = atomic_inc_return(y);
	spin_unlock(lck);
}

locations [x;0:r2;1:r0;1:r1;1:r2]
filter (1:r0=0 /\ 1:r1=1)
exists (1:r2=1)
