Messages in this thread | | | Date | Tue, 11 Sep 2018 13:44:29 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCHv3 2/6] tty/ldsem: Update waiter->task before waking up reader |
| |
On Tue, Sep 11, 2018 at 02:41:29PM +0900, Sergey Senozhatsky wrote: > On (09/11/18 14:04), Sergey Senozhatsky wrote: > > > for (;;) { > > > set_current_state(TASK_UNINTERRUPTIBLE); > > > > I think that set_current_state() also executes memory barrier. Just > > because it accesses task state. > > > > > - if (!waiter.task) > > > + if (!READ_ONCE(waiter.task)) > > > break; > > > if (!timeout) > > > break; > > This READ_ONCE(waiter.task) looks interesting. Maybe could be moved > to a loop condition > > while (!READ_ONCE(waiter.task)) { > ... > }
No, it must be after set_current_state(). See that same comment.
| |