diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2014-09-12 07:31:08 -0400 |
---|---|---|
committer | Namhoon Kim <namhoonk@cs.unc.edu> | 2014-11-03 21:59:04 -0500 |
commit | 4841253863ef57e0b91d169b0080ce079d54fe6f (patch) | |
tree | e086695ed0f01f996821e001918d53ed3da276d4 /net/lapb/lapb_timer.c | |
parent | 563999251e34d52bfbc47889cabd763714d020e1 (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 'net/lapb/lapb_timer.c')
0 files changed, 0 insertions, 0 deletions