git: tmpfs - Fix rare deadlock
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Aug 29 08:27:45 PDT 2018
commit d89a0e31a842d13f34830f543170e9d31a70afd9
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Aug 25 10:10:08 2018 -0700
tmpfs - Fix rare deadlock
* Fix a deadlock which can occur between umount and tmpfs, and
possibly in other very rare situations.
* tmpfs holds the directory node locked when resolving a directory
entry. This results in a lock order reversal between the
directory's tmpfs_node lock and the vnode being locked.
Fixed by using a NOWAIT/UNLOCK/SLEEPFAIL/RETRY sequence.
Summary of changes:
sys/vfs/tmpfs/tmpfs.h | 4 ++--
sys/vfs/tmpfs/tmpfs_subr.c | 49 ++++++++++++++++++++++++++++++++++----------
sys/vfs/tmpfs/tmpfs_vfsops.c | 5 +++--
sys/vfs/tmpfs/tmpfs_vnops.c | 11 +++++++---
4 files changed, 51 insertions(+), 18 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d89a0e31a842d13f34830f543170e9d31a70afd9
--
DragonFly BSD source repository
More information about the Commits
mailing list