Date: Thu, 23 Oct 2003 18:11:11 -0700 (PDT) From: Chris Vance <cvance@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 40354 for review Message-ID: <200310240111.h9O1BB6a007374@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=40354 Change 40354 by cvance@cvance_osx_laptop on 2003/10/23 18:10:19 Add vnode read,write, and stat entry points Affected files ... .. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/kern_ktrace.c#3 edit .. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_syscalls.c#4 edit .. //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_vnops.c#4 edit Differences ... ==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/kern/kern_ktrace.c#3 (text+ko) ==== @@ -562,6 +562,10 @@ if (error) goto bad; (void)VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE); +#ifdef MAC + error = mac_check_vnode_write(p->p_ucred, NOCRED, vp); + if (error == 0) +#endif error = VOP_WRITE(vp, &auio, IO_UNIT | IO_APPEND, p->p_ucred); if (error == 0 && uio != NULL) { (void)VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE); ==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_syscalls.c#4 (text+ko) ==== @@ -1061,6 +1061,12 @@ type = F_FLOCK; if ((flags & FNONBLOCK) == 0) type |= F_WAIT; +#ifdef MAC_XXX + error = mac_check_file_change_flags(p->p_ucred, fp, + fp->f_flag, fp->f_flag | FHASLOCK); + if (error) + return (error); +#endif VOP_UNLOCK(vp, 0, p); if (error = VOP_ADVLOCK(vp, (caddr_t)fp, F_SETLK, &lf, type)) { (void) vn_close(vp, fp->f_flag, fp->f_cred, p); @@ -2260,6 +2266,10 @@ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); if (vp->v_type == VDIR) error = EISDIR; +#ifdef MAC + else if ((error = mac_check_vnode_write(p->p_ucred, NOCRED, vp))) { + } +#endif else if ((error = vn_writechk(vp)) == 0 && (error = VOP_ACCESS(vp, VWRITE, p->p_ucred, p)) == 0) { VATTR_NULL(&vattr); @@ -2311,6 +2321,10 @@ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); if (vp->v_type == VDIR) error = EISDIR; +#ifdef MAC + else if ((error = mac_check_vnode_write(p->p_ucred, fp->f_cred, vp))) { + } +#endif else if ((error = vn_writechk(vp)) == 0) { VATTR_NULL(&vattr); vattr.va_size = uap->length; ==== //depot/projects/trustedbsd/sedarwin/apsl/xnu/bsd/vfs/vfs_vnops.c#4 (text+ko) ==== @@ -162,6 +162,12 @@ goto bad; } +#ifdef MAC + error = mac_check_vnode_open(cred, vp, fmode); + if (error) + goto bad; +#endif + #if DIAGNOSTIC if (UBCINFOMISSING(vp)) panic("vn_open: ubc_info_init"); @@ -298,7 +304,14 @@ auio.uio_rw = rw; auio.uio_procp = p; +#ifdef MAC + /* passed cred is fp->f_cred */ if (rw == UIO_READ) + error = mac_check_vnode_read(p->p_ucred, cred, vp); + else + error = mac_check_vnode_write(p->p_ucred, cred, vp); +#endif +if (rw == UIO_READ) error = VOP_READ(vp, &auio, ioflg, cred); else error = VOP_WRITE(vp, &auio, ioflg, cred); @@ -387,6 +400,10 @@ goto done; } } +#ifdef MAC + error = mac_check_vnode_read(p->p_ucred, cred, vp); + if (error == 0) +#endif error = VOP_READ(vp, uio, ioflag, cred); if ((flags & FOF_OFFSET) == 0) fp->f_offset += count - uio->uio_resid; @@ -478,6 +495,10 @@ goto done; } } +#ifdef MAC + error = mac_check_vnode_write(p->p_ucred, cred, vp); + if (error == 0) +#endif error = VOP_WRITE(vp, uio, ioflag, cred); if ((flags & FOF_OFFSET) == 0) { @@ -513,6 +534,12 @@ int error; u_short mode; +#ifdef MAC + error = mac_check_vnode_stat(p->p_ucred, NOCRED, vp); + if (error) + return (error); +#endif + vap = &vattr; error = VOP_GETATTR(vp, vap, p->p_ucred, p); if (error)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310240111.h9O1BB6a007374>