aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2023-04-05 23:10:34 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2023-04-06 15:20:41 +0000
commitf87a9f51ef2b5a02b663c02ddd2ac663a5a45a88 (patch)
tree5c8829d30c2e4c25026de12e754a5535f771ad9d
parente237e2ba5f4fc008eaf6e306e69fb9d98f5de27d (diff)
downloadsrc-f87a9f51ef2b5a02b663c02ddd2ac663a5a45a88.tar.gz
src-f87a9f51ef2b5a02b663c02ddd2ac663a5a45a88.zip
vfs: validate that a mount point with FPLOOKUP has vop_fplookup ops
-rw-r--r--sys/kern/vfs_subr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 5c1819800d96..96adc6ff3493 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1800,6 +1800,10 @@ getnewvnode(const char *tag, struct mount *mp, struct vop_vector *vops,
KASSERT(vops->registered,
("%s: not registered vector op %p\n", __func__, vops));
+ if (mp != NULL && (mp->mnt_kern_flag & MNTK_FPLOOKUP) != 0) {
+ MPASS(vops->vop_fplookup_vexec != VOP_PANIC);
+ MPASS(vops->vop_fplookup_symlink != VOP_PANIC);
+ }
td = curthread;
if (td->td_vp_reserved != NULL) {