lkml.org 
[lkml]   [2010]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC PATCH] introduce sys_membarrier(): process-wide memory barrier (v5)
From
Date
On Tue, 2010-01-19 at 19:37 +0100, Peter Zijlstra wrote:

> So about that [*], Oleg, kernel/signal.c:SYSCALL_DEFINE0(pause) does:
>
> SYSCALL_DEFINE0(pause)
> {
> current->state = TASK_INTERRUPTIBLE;
> schedule();
> return -ERESTARTNOHAND;
> }
>
> Isn't that ->state assignment buggy? If so, there appear to be quite a
> few such sites, which worries me.
>

That looks buggy to me. Isn't this the reason we have
set_current_state()?

Although, since it is not checking any condition, it may not be buggy.
The check inside scheduler for state != TASK_RUNNING is protected inside
the rq locks, and any other task must grab the rq lock of the task
before it can change the task's state. schedule() also checks for
signals which would force schedule() to wake it up.

But that said, I still think that should be changed to
set_current_state(TASK_INTERRUPTIBLE).


-- Steve





\
 
 \ /
  Last update: 2010-01-19 20:45    [W:0.108 / U:0.060 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site