diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-02-28 00:15:21 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-03-21 17:54:31 +0000 |
commit | 45cc277b8522723bc75912fb68665767dadc45ac (patch) | |
tree | ba9c2a0e4096ad7cd5b842909cf27230b4383a51 | |
parent | 2cb05fff66929296444ee0ff5c1fcbb8419c54d9 (diff) | |
download | src-45cc277b8522723bc75912fb68665767dadc45ac.tar.gz src-45cc277b8522723bc75912fb68665767dadc45ac.zip |
nameicap_check_dotdot: trim tracker on check
Tested by: pho
(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 74a5e9cdcfb9..442555700425 100644 --- a/sys/kern/vfs_lookup.c +++ b/sys/kern/vfs_lookup.c @@ -237,8 +237,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); } |