Re: [RFC][PATCH] Fix a race between rwsem and the scheduler

From: Benjamin Herrenschmidt
Date: Tue Aug 30 2016 - 17:25:49 EST


On Tue, 2016-08-30 at 15:04 +0200, Oleg Nesterov wrote:
>
> Confused... how this connects to UNLOCK+LOCK on rq->lock? A LOAD can
> leak into the critical section.
>
> But context switch should imply mb() we can rely on?

Between setting of ->on_rq and returning to the task so it can
change its state back to [UN]INTERRUPTIBLE, there will be at least one
write barrier (spin unlock of the rq), possibly even a full barrier
(context switch). The write barrier is enough so I didn't dig to make
sure we always context switch in the scenario we're looking at but I
think we do.

Cheers,
Ben.