diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2020-12-27 19:42:16 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2020-12-27 19:49:24 +0000 |
commit | 623daa69f9f43613f49ea6164175195ea3a8b3e9 (patch) | |
tree | 4462955dad88f096c614ba9a30a21f06206f5e2d /sys/kern/vfs_cache.c | |
parent | a1fc1f10c65fe8684d09d2252c19ebb213182b4f (diff) | |
download | src-623daa69f9f43613f49ea6164175195ea3a8b3e9.tar.gz src-623daa69f9f43613f49ea6164175195ea3a8b3e9.zip |
cache: assert internal flags are not passed by namei
Diffstat (limited to 'sys/kern/vfs_cache.c')
-rw-r--r-- | sys/kern/vfs_cache.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 38121893126e..6e5154df63a1 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -67,6 +67,9 @@ __FBSDID("$FreeBSD$"); #ifdef KTRACE #include <sys/ktrace.h> #endif +#ifdef INVARIANTS +#include <machine/_inttypes.h> +#endif #include <sys/capsicum.h> @@ -4704,6 +4707,9 @@ cache_fplookup(struct nameidata *ndp, enum cache_fpl_status *status, fpl.ndp = ndp; fpl.cnp = &ndp->ni_cnd; MPASS(curthread == fpl.cnp->cn_thread); + KASSERT ((fpl.cnp->cn_flags & CACHE_FPL_INTERNAL_CN_FLAGS) == 0, + ("%s: internal flags found in cn_flags %" PRIx64, __func__, + fpl.cnp->cn_flags)); if ((fpl.cnp->cn_flags & SAVESTART) != 0) MPASS(fpl.cnp->cn_nameiop != LOOKUP); |