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