Re: [PATCH RT] hrtimer: move state change before hrtimer_cancel in do_nanosleep()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 12/6/18 11:15 AM, Sebastian Andrzej Siewior wrote:
> There is a small window between setting t->task to NULL and waking the
> task up (which would set TASK_RUNNING). So the timer would fire, run and
> set ->task to NULL while the other side/do_nanosleep() wouldn't enter
> freezable_schedule(). After all we are peemptible here (in
> do_nanosleep() and on the timer wake up path) and on KVM/virt the
> virt-CPU might get preempted.
> So do_nanosleep() wouldn't enter freezable_schedule() but cancel the
> timer which is still running and wait for it via
> hrtimer_wait_for_timer(). Then wait_event()/might_sleep() would complain
> that it is invoked with state != TASK_RUNNING.
> This isn't a problem since it would be reset to TASK_RUNNING later
> anyway and we don't rely on the previous state.
> 
> Move the state update to TASK_RUNNING before hrtimer_cancel() so there
> are no complains from might_sleep() about wrong state.
> 
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>

Reviewed-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>

Thanks!

-- Daniel



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux