git: kernel - Fix callout_stop/callout_reset rearm race
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Sep 11 00:15:07 PDT 2017
commit d1604347da547e02f356d4a159c59ce4be79a132
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Mon Sep 11 00:11:31 2017 -0700
kernel - Fix callout_stop/callout_reset rearm race
* If a callout_reset() occurs while a callout_stop() is running, the
callout_stop() can wind up blocking forever. Change the conditional
to break out of the processing loop to simply wait for the IPI to finish
executing, and if the callout is still armed due to a callout_reset()
the callout_stop() simply loops back to the top and retries the stop.
* Can be reproduced when itimers are used heavily (typically ghc processes
that run during a bulk synth run).
* Race tested and verified to occur, fix appears to solve the problem.
Summary of changes:
sys/kern/kern_timeout.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d1604347da547e02f356d4a159c59ce4be79a132
--
DragonFly BSD source repository
More information about the Commits
mailing list