aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/vfs_cache.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2020-12-27 19:42:16 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2020-12-27 19:49:24 +0000
commit623daa69f9f43613f49ea6164175195ea3a8b3e9 (patch)
tree4462955dad88f096c614ba9a30a21f06206f5e2d /sys/kern/vfs_cache.c
parenta1fc1f10c65fe8684d09d2252c19ebb213182b4f (diff)
downloadsrc-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.c6
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);