Messages in this thread | | | Date | Wed, 31 Aug 2016 09:20:41 +0200 | From | Peter Zijlstra <> | Subject | Re: [RFC][PATCH] Fix a race between rwsem and the scheduler |
| |
On Wed, Aug 31, 2016 at 07:25:01AM +1000, Benjamin Herrenschmidt wrote: > 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),
spin-unlock is _not_ a write barrier, its a RELEASE barrier, and is not sufficient for this.
> 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.
There is enough, you just need to pair the RELEASE with an ACQUIRE to get a full load-store barrier.
| |