DragonFly BSD
DragonFly commits List (threaded) for 2010-08
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: kernel - Fix possible race in syncache


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 18 Aug 2010 12:25:45 -0700 (PDT)

commit c1d0893d667ee18127bd3d2e371b820d65c5c0c2
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Wed Aug 18 12:22:49 2010 -0700

    kernel - Fix possible race in syncache
    
    * syncache_timer_handler() can block while dropping a syncache entry,
      potentially causing the next pointer it uses in its list iteration
      to become stale.
    
    * Use a list marker to keep tabs on the list position instead of using
      a next pointer.
    
    * Remove critical sections, callouts do not preempt and syncache
      routines can only be entered from protocol threads or callouts.
    
    * Document the callout code as not preempting other threads.
    
    Reported-by: Peter Avalos <pavalos@theshell.com>

Summary of changes:
 sys/kern/kern_timeout.c    |   19 ++++---------
 sys/netinet/tcp_syncache.c |   63 +++++++++++++++++++++++++++----------------
 sys/netinet/tcp_var.h      |    1 +
 3 files changed, 46 insertions(+), 37 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c1d0893d667ee18127bd3d2e371b820d65c5c0c2


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]