diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2014-09-12 07:31:08 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2014-09-12 07:45:29 -0400 |
commit | adc5c2babea29bfb1dc3297e41500b95c146fb41 (patch) | |
tree | b589601fd0907b77c551dc550b95f9244a5415a0 /lib | |
parent | 9ec32807edf33064734a815c949668704a07c5f3 (diff) |
P-RES: fix rare deadlock via hrtimer_start()
There's a rare condition under which the current call to hrtimer_start()
in pres_update_timer() may result in deadlock.
pres_update_timer() // holds runqueue lock and state->lock
-> hrtimer_start()
-> raise_softirq_irqoff()
-> wakeup_softirqd()
-> wake_up_process()
-> acquires runqueue lock()
To avoid this, we need to call __hrtimer_start_range_ns() with the
'wakeup' flag set to zero.
While at it, also drop the state->lock before calling into hrtimer(),
to avoid making the scheduler critical section longer than necessary.
Diffstat (limited to 'lib')
0 files changed, 0 insertions, 0 deletions