svn commit: r358189 - head/sys/security/audit

Mateusz Guzik mjg at FreeBSD.org
Fri Feb 21 01:39:53 UTC 2020


Author: mjg
Date: Fri Feb 21 01:39:51 2020
New Revision: 358189
URL: https://svnweb.freebsd.org/changeset/base/358189

Log:
  audit: rely on use count instead of hold count in audit_canon_path

Modified:
  head/sys/security/audit/audit_bsm_klib.c

Modified: head/sys/security/audit/audit_bsm_klib.c
==============================================================================
--- head/sys/security/audit/audit_bsm_klib.c	Fri Feb 21 00:33:21 2020	(r358188)
+++ head/sys/security/audit/audit_bsm_klib.c	Fri Feb 21 01:39:51 2020	(r358189)
@@ -443,7 +443,7 @@ audit_canon_path(struct thread *td, int dirfd, char *p
 	 */
 	if (fdp->fd_rdir != NULL && fdp->fd_rdir != rootvnode) {
 		rvnp = fdp->fd_rdir;
-		vhold(rvnp);
+		vrefact(rvnp);
 	}
 	/*
 	 * If the supplied path is relative, make sure we capture the current
@@ -453,19 +453,16 @@ audit_canon_path(struct thread *td, int dirfd, char *p
 	if (*path != '/') {
 		if (dirfd == AT_FDCWD) {
 			cvnp = fdp->fd_cdir;
-			vhold(cvnp);
+			vrefact(cvnp);
 		} else {
-			/* XXX: fgetvp() that vhold()s vnode instead of vref()ing it would be better */
 			error = fgetvp(td, dirfd, cap_rights_init(&rights), &cvnp);
 			if (error) {
 				FILEDESC_SUNLOCK(fdp);
 				cpath[0] = '\0';
 				if (rvnp != NULL)
-					vdrop(rvnp);
+					vrele(rvnp);
 				return;
 			}
-			vhold(cvnp);
-			vrele(cvnp);
 		}
 		needslash = (fdp->fd_rdir != cvnp);
 	} else {
@@ -492,11 +489,11 @@ audit_canon_path(struct thread *td, int dirfd, char *p
 	 */
 	if (rvnp != NULL) {
 		error = vn_fullpath_global(td, rvnp, &rbuf, &fbuf);
-		vdrop(rvnp);
+		vrele(rvnp);
 		if (error) {
 			cpath[0] = '\0';
 			if (cvnp != NULL)
-				vdrop(cvnp);
+				vrele(cvnp);
 			return;
 		}
 		(void) sbuf_cat(&sbf, rbuf);
@@ -504,7 +501,7 @@ audit_canon_path(struct thread *td, int dirfd, char *p
 	}
 	if (cvnp != NULL) {
 		error = vn_fullpath(td, cvnp, &rbuf, &fbuf);
-		vdrop(cvnp);
+		vrele(cvnp);
 		if (error) {
 			cpath[0] = '\0';
 			return;


More information about the svn-src-head mailing list