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

git: kernel - Fix additional races in lwp_signotify()


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 17 Nov 2011 10:46:07 -0800 (PST)

commit 81cd8ede74a6a09d318c1642787a8b8936374786
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Thu Nov 17 10:44:16 2011 -0800

    kernel - Fix additional races in lwp_signotify()
    
    * lwp_signotify() was improperly scheduling threads whos td_gd is on the
      local cpu without checking the SINTR flags.  This can catch a thread in
      the middle of being transitioned to another cpu and cause havoc.
    
    * Only schedule the thread if the SINTR flags are set.
    
    * We can't call setrunnable() from an IPI so adjustments have to be made
      in the remote cpu to set the lp's lwp_stat state before issuing the IPI
      and only do the scheduling of its thread from the IPI function.
    
    Reported-by: ftigeot

Summary of changes:
 sys/kern/kern_sig.c |   81 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 58 insertions(+), 23 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/81cd8ede74a6a09d318c1642787a8b8936374786


-- 
DragonFly BSD source repository



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