git: kernel - Fix a third missing wakeup() in kern_lock.c

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Aug 30 09:10:45 PDT 2018


commit 4f29f4c6fe268c512c02bca8febda0fd7d2c987c
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Aug 29 22:10:49 2018 -0700

    kernel - Fix a third missing wakeup() in kern_lock.c
    
    * Fix a case where an lockmgr LK_EXCLUSIVE call with a
      timeout blocks due to existing shared locks.  If the
      timeout occurs, the exclusive lock request is backed out.
    
      However, if any new shared locks are attempted while
      the EXREQ was pending (due to the exclusive priority
      mechanism), those threads will block.  The backout code
      was not waking the blocked threads up for this situation.
    
    * Fixed by issuing the wakeup() unconditionally for this
      case.  This is not a heavily traveled code path as locks
      with timeouts rarely reach the actual timeout.

Summary of changes:
 sys/kern/kern_lock.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4f29f4c6fe268c512c02bca8febda0fd7d2c987c


-- 
DragonFly BSD source repository


More information about the Commits mailing list