git: kernel - Fix panic related to kqueue-based timers

看板DFBSD_commit作者時間14年前 (2011/10/22 18:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
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
文章代碼(AID): #1EefJJlf (DFBSD_commit)