DragonFly commits List (threaded) for 2011-09
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
git: kernel - Fix panic related to kqueue-based timers
commit b90e37ec76a8f3cfd0c32fa2bd292cb261773d85
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date: Wed Sep 7 15:48:07 2011 -0700
kernel - Fix panic related to kqueue-based timers
* Fix a panic related to kqueue-based timers. When a knote is destroyed it
is possible for the callout_stop() to race a callout on another cpu that
is blocked on a lock.
* Introduce callout_terminate() which stops a callout and ensures that no
function calls for the callout is still in progress before returning.
The kevent code now uses this function instead of callout_stop().
* We can't have this assurance for the normal callout_stop() function because
it can deadlock a backend stuck waiting for a lock when a frontend holding
that lock calls callout_stop().
Reported-by: Antonio Huete Jimenez <tuxillo@quantumachine.net>
Summary of changes:
sys/kern/kern_event.c | 13 +++++++++----
sys/kern/kern_timeout.c | 40 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 48 insertions(+), 5 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/b90e37ec76a8f3cfd0c32fa2bd292cb261773d85
--
DragonFly BSD source repository
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]