CPU1 CPU2 raw_spin_lock_irqsave(&p->pi_lock, flags); set_task_state(tsk, TASK_INTERRUPTIBLE); if (!(p->state & state)) ---> TASK_INTERRUPTIBLE | goto out; | cpu = task_cpu(p); set_task_state(tsk, TASK_RUNNING); ... ---> TASK_RUNNING