DragonFly BSD
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


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 7 Sep 2011 15:51:31 -0700 (PDT)

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]