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

git: kernel - Fix list corruption in dsched


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 12 Feb 2011 13:34:31 -0800 (PST)

commit 0b81692c192f8106f3048aff53e3f6f77731d565
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Sat Feb 12 13:30:16 2011 -0800

    kernel - Fix list corruption in dsched
    
    * dsched_thread_ctx_alloc() was not acquiring the global lock across
      calls to dsched_thread_io_alloc(), creating a race condition in the
      call to TAILQ_INSERT_TAIL(&tdio->diskctx->tdio_list, ...).
    
      This case can occur under heavy fork/exit loads, particularly when
      (soon) fork and exit get out from the MP lock, but even with the MP
      lock on the frontend it can occur against the dsched backend.
    
    * dsched_new_policy_thread_tdio() was not acquiring the global lock
      across its initial call to dsched_thread_io_alloc().  This case could
      only occur with extreme rarity.

Summary of changes:
 sys/kern/kern_dsched.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0b81692c192f8106f3048aff53e3f6f77731d565


-- 
DragonFly BSD source repository



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