Well, I guess it was just to prove to myself that I broke something
because I dont understand how the vsyscall interface works. But given
your expertise here, I have no problem with just taking your word for it.=
t,
Yeah, understood. There is both in -rt and I was just saying that we
technically only need the seqlock_t fix in -rt. So if raw_seqlock_t
could be left pristine and solve this problem, that is an acceptable
compromise to me.
ed
e
Yeah, it would possibly be a problem in both cases.
The problem I am addressing only exists in -rt since it has seqlock_t
and raw_seqlock_t (with the former using preemptible spinlock_t's).=20
Since the underlying seqlock_t->spinlock_t is preemptible, you can see
that one thread that does:
{
write_seqlock();
/* asl */
write_sequnlock();
}
while other high-prio threads do
do { read_seqbegin(); /* asl */; } while (read_seqretry());
The readers could preempt the writer mid critical section and enter a
live-locked loop.
raw_seqlock_t (which is equivalent to a mainline seqlock_t) do not have
this problem because the spinlock acquisition inside the write_seqlock
disables preemption.
HTH
-Greg