PERFORCE change 39790 for review

Chris Vance cvance at FreeBSD.org
Thu Oct 16 15:17:16 GMT 2003


http://perforce.freebsd.org/chv.cgi?CH=39790

Change 39790 by cvance at cvance_osx_laptop on 2003/10/16 08:17:02

	Add another small batch of vnode entry points.

Affected files ...

.. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/kern_descrip.c#2 edit
.. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/uipc_usrreq.c#2 edit
.. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_syscalls.c#3 edit
.. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_vnops.c#3 edit

Differences ...

==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/kern_descrip.c#2 (text+ko) ====


==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/uipc_usrreq.c#2 (text+ko) ====

@@ -597,6 +597,11 @@
 	vattr.va_type = VSOCK;
 	vattr.va_mode = (ACCESSPERMS & ~p->p_fd->fd_cmask);
 	VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
+#ifdef MAC
+	error = mac_check_vnode_create(p->p_ucred, nd.ni_dvp, &nd.ni_cnd,
+	    &vattr);
+	if (error == 0)
+#endif
 	error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr);
 #if 0
 	/* In FreeBSD create leave s parent held ; not here */

==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_syscalls.c#3 (text+ko) ====

@@ -1154,6 +1154,11 @@
 			break;
 		}
 	}
+#ifdef MAC
+	if (error == 0 && !whiteout)
+		error = mac_check_vnode_create(p->p_ucred, nd.ni_dvp,
+		    &nd.ni_cnd, &vattr);
+#endif
 	if (!error) {
 		VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 		if (whiteout) {
@@ -1214,6 +1219,12 @@
 	VATTR_NULL(&vattr);
 	vattr.va_type = VFIFO;
 	vattr.va_mode = (uap->mode & ALLPERMS) &~ p->p_fd->fd_cmask;
+#ifdef MAC
+	error = mac_check_vnode_create(p->p_ucred, nd.ni_dvp, &nd.ni_cnd,
+	    &vattr);
+	if (error)
+		return (error);
+#endif
 	VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 	return (VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr));
 #endif /* FIFO */
@@ -1314,6 +1325,13 @@
 	}
 	VATTR_NULL(&vattr);
 	vattr.va_mode = ACCESSPERMS &~ p->p_fd->fd_cmask;
+#ifdef MAC
+	vattr.va_type = VLNK;
+	error = mac_check_vnode_create(p->p_ucred, nd.ni_dvp, &nd.ni_cnd,
+	    &vattr);
+	if (error)
+		goto out;
+#endif
 	VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 	error = VOP_SYMLINK(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr, path);
 out:
@@ -1403,6 +1421,11 @@
 			error = EBUSY;
 	}
 
+#ifdef MAC
+	if (!error)
+		error = mac_check_vnode_delete(p->p_ucred, nd.ni_dvp, vp,
+		    &nd.ni_cnd);
+#endif
 	if (!error) {
 		VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 		error = VOP_REMOVE(nd.ni_dvp, nd.ni_vp, &nd.ni_cnd);
@@ -1965,6 +1988,10 @@
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
 	VATTR_NULL(&vattr);
 	vattr.va_mode = uap->mode & ALLPERMS;
+#ifdef MAC
+	error = mac_check_vnode_setmode(p->p_ucred, vp, vattr.va_mode);
+	if (error == 0)
+#endif
 	error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 	vput(vp);
 	return (error);
@@ -1996,6 +2023,10 @@
 	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
 	VATTR_NULL(&vattr);
 	vattr.va_mode = uap->mode & ALLPERMS;
+#ifdef MAC
+	error = mac_check_vnode_setmode(p->p_ucred, vp, vattr.va_mode);
+	if (error == 0)
+#endif
 	error = VOP_SETATTR(vp, &vattr, p->p_ucred, p);
 	VOP_UNLOCK(vp, 0, p);
 	return (error);
@@ -2691,6 +2722,12 @@
 	VATTR_NULL(&vattr);
 	vattr.va_type = VDIR;
 	vattr.va_mode = (uap->mode & ACCESSPERMS) &~ p->p_fd->fd_cmask;
+#ifdef MAC
+	error = mac_check_vnode_create(p->p_ucred, nd.ni_dvp, &nd.ni_cnd,
+	    &vattr);
+	if (error)
+		return (error);
+#endif
 	VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 	error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr);
 	if (!error)
@@ -2738,6 +2775,11 @@
 	if (vp->v_flag & VROOT)
 		error = EBUSY;
 out:
+#ifdef MAC
+	if (!error)
+		error = mac_check_vnode_delete(p->p_ucred, nd.ni_dvp, vp,
+		    &nd.ni_cnd);
+#endif
 	if (!error) {
 		VOP_LEASE(nd.ni_dvp, p, p->p_ucred, LEASE_WRITE);
 		VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE);
@@ -2883,6 +2925,10 @@
 		}
 		
 		if (lvp != NULLVP) {
+#ifdef MAC
+			error = mac_check_vnode_readdir(p->p_ucred, lvp);
+			if (!error)
+#endif
 			error = VOP_OPEN(lvp, FREAD, fp->f_cred, p);
 			if (error) {
 				vput(lvp);

==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_vnops.c#3 (text+ko) ====

@@ -126,6 +126,11 @@
 			if (fmode & O_EXCL)
 				vap->va_vaflags |= VA_EXCLUSIVE;
 			VOP_LEASE(ndp->ni_dvp, p, cred, LEASE_WRITE);
+#ifdef MAC
+                        error = mac_check_vnode_create(cred, ndp->ni_dvp,
+			    &ndp->ni_cnd, vap);
+			if (error == 0)
+#endif
 			if (error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp,
 			    &ndp->ni_cnd, vap))
 				return (error);
To Unsubscribe: send mail to majordomo at trustedbsd.org
with "unsubscribe trustedbsd-cvs" in the body of the message



More information about the trustedbsd-cvs mailing list