From 85dac03e30e6aebdf0808cd750cc5ab96efcb67c Mon Sep 17 00:00:00 2001 From: Mateusz Guzik Date: Thu, 17 Nov 2022 16:58:28 +0000 Subject: [PATCH] vfs: stop using NDFREE It provides nothing but a branchfest and next to no consumers want it anyway. Tested by: pho --- sys/kern/vfs_acl.c | 11 +++++++---- sys/kern/vfs_cache.c | 4 +++- sys/kern/vfs_extattr.c | 8 +++++--- sys/kern/vfs_subr.c | 3 ++- sys/security/mac/mac_syscalls.c | 7 ++++--- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/sys/kern/vfs_acl.c b/sys/kern/vfs_acl.c index dffce9d29291..e5470bd11438 100644 --- a/sys/kern/vfs_acl.c +++ b/sys/kern/vfs_acl.c @@ -380,7 +380,8 @@ kern___acl_get_path(struct thread *td, const char *path, acl_type_t type, error = namei(&nd); if (error == 0) { error = vacl_get_acl(td, nd.ni_vp, type, aclp); - NDFREE(&nd, 0); + vrele(nd.ni_vp); + NDFREE_PNBUF(&nd); } return (error); } @@ -418,7 +419,8 @@ kern___acl_set_path(struct thread *td, const char *path, error = namei(&nd); if (error == 0) { error = vacl_set_acl(td, nd.ni_vp, type, aclp); - NDFREE(&nd, 0); + vrele(nd.ni_vp); + NDFREE_PNBUF(&nd); } return (error); } @@ -494,7 +496,8 @@ kern___acl_delete_path(struct thread *td, const char *path, error = namei(&nd); if (error == 0) { error = vacl_delete(td, nd.ni_vp, type); - NDFREE(&nd, 0); + vrele(nd.ni_vp); + NDFREE_PNBUF(&nd); } return (error); } @@ -551,7 +554,7 @@ kern___acl_aclcheck_path(struct thread *td, const char *path, acl_type_t type, error = namei(&nd); if (error == 0) { error = vacl_aclcheck(td, nd.ni_vp, type, aclp); - NDFREE(&nd, 0); + NDFREE_PNBUF(&nd); } return (error); } diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index e58d3f338085..08d7ab2895cd 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -3153,7 +3153,9 @@ kern___realpathat(struct thread *td, int fd, const char *path, char *buf, error = copyout(retbuf, buf, size); free(freebuf, M_TEMP); } - NDFREE(&nd, 0); + vrele(nd.ni_vp); + vrele(nd.ni_dvp); + NDFREE_PNBUF(&nd); return (error); } diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index d389b33d0634..d190ec60205a 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -108,7 +108,7 @@ sys_extattrctl(struct thread *td, struct extattrctl_args *uap) if (error) return (error); filename_vp = nd.ni_vp; - NDFREE(&nd, NDF_NO_VP_RELE); + NDFREE_PNBUF(&nd); } /* uap->path is always defined. */ @@ -120,13 +120,15 @@ sys_extattrctl(struct thread *td, struct extattrctl_args *uap) mp = nd.ni_vp->v_mount; error = vfs_busy(mp, 0); if (error) { - NDFREE(&nd, 0); + vput(nd.ni_vp); + NDFREE_PNBUF(&nd); mp = NULL; goto out; } VOP_UNLOCK(nd.ni_vp); error = vn_start_write(nd.ni_vp, &mp_writable, V_WAIT | V_PCATCH); - NDFREE(&nd, NDF_NO_VP_UNLOCK); + vrele(nd.ni_vp); + NDFREE_PNBUF(&nd); if (error) goto out; if (filename_vp != NULL) { diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 4aea0f263e46..63a30cbbdb3d 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -415,7 +415,8 @@ sysctl_try_reclaim_vnode(SYSCTL_HANDLER_ARGS) counter_u64_add(recycles_count, 1); vgone(vp); putvnode: - NDFREE(&nd, 0); + vput(vp); + NDFREE_PNBUF(&nd); out: free(buf, M_TEMP); return (error); diff --git a/sys/security/mac/mac_syscalls.c b/sys/security/mac/mac_syscalls.c index 9bc334686aa4..ecb451ac2018 100644 --- a/sys/security/mac/mac_syscalls.c +++ b/sys/security/mac/mac_syscalls.c @@ -369,7 +369,8 @@ kern___mac_get_path(struct thread *td, const char *path_p, struct mac *mac_p, mac_vnode_copy_label(nd.ni_vp->v_label, intlabel); error = mac_vnode_externalize_label(intlabel, elements, buffer, mac.m_buflen); - NDFREE(&nd, 0); + vput(nd.ni_vp); + NDFREE_PNBUF(&nd); mac_vnode_label_free(intlabel); if (error == 0) @@ -542,9 +543,9 @@ kern___mac_set_path(struct thread *td, const char *path_p, struct mac *mac_p, td->td_ucred); vn_finished_write(mp); } + vput(nd.ni_vp); + NDFREE_PNBUF(&nd); } - - NDFREE(&nd, 0); out: mac_vnode_label_free(intlabel); return (error);