git: 0c01203e4725 - main - vfs_lookup(): re-check v_mountedhere on lock upgrade
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 18 Apr 2023 01:35:46 UTC
The branch main has been updated by jah:
URL: https://cgit.FreeBSD.org/src/commit/?id=0c01203e472567017da3e525e409c83bd5418a75
commit 0c01203e472567017da3e525e409c83bd5418a75
Author: Jason A. Harmening <jah@FreeBSD.org>
AuthorDate: 2023-03-28 18:06:29 +0000
Commit: Jason A. Harmening <jah@FreeBSD.org>
CommitDate: 2023-04-18 01:31:40 +0000
vfs_lookup(): re-check v_mountedhere on lock upgrade
The VV_CROSSLOCK handling logic may need to upgrade the covered
vnode lock depending upon the requirements of the filesystem into
which vfs_lookup() is walking. This may involve transiently
dropping the lock, which can allow the target mount to be unmounted.
Tested by: pho
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D39272
---
sys/kern/vfs_lookup.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c
index 172aa4b4f576..d9a9cabde177 100644
--- a/sys/kern/vfs_lookup.c
+++ b/sys/kern/vfs_lookup.c
@@ -1280,6 +1280,9 @@ good:
error = ENOENT;
goto bad2;
}
+ if (dp->v_mountedhere != mp) {
+ continue;
+ }
} else
crosslkflags &= ~LK_NODDLKTREAT;
}