diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2023-04-05 23:10:34 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2023-04-06 15:20:41 +0000 |
commit | f87a9f51ef2b5a02b663c02ddd2ac663a5a45a88 (patch) | |
tree | 5c8829d30c2e4c25026de12e754a5535f771ad9d | |
parent | e237e2ba5f4fc008eaf6e306e69fb9d98f5de27d (diff) | |
download | src-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.c | 4 |
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) { |