看板 DFBSD_commit 關於我們 聯絡資訊
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