diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2021-02-28 00:15:21 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-03-04 19:11:09 +0000 |
| commit | af188c01b303f0f13cd3835d5c6a2fa8aecdb9bb (patch) | |
| tree | eb1c83cc559e0e490d905e3318a0f16e5b0a179f | |
| parent | 68230041eb292f26132c73de9369e695ab6ada6e (diff) | |
nameicap_check_dotdot: trim tracker on check
(cherry picked from commit 49c98a4bf3a87ace0df99056fa683805c1645e61)
| -rw-r--r-- | sys/kern/vfs_lookup.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c index abc01c73e24c..b4280f85c5b6 100644 --- a/sys/kern/vfs_lookup.c +++ b/sys/kern/vfs_lookup.c @@ -240,8 +240,12 @@ nameicap_check_dotdot(struct nameidata *ndp, struct vnode *dp) return (ENOTCAPABLE); TAILQ_FOREACH_REVERSE(nt, &ndp->ni_cap_tracker, nameicap_tracker_head, nm_link) { - if (dp == nt->dp) + if (dp == nt->dp) { + nt = TAILQ_NEXT(nt, nm_link); + if (nt != NULL) + nameicap_cleanup_from(ndp, nt); return (0); + } } return (ENOTCAPABLE); } |
