vfs_syscalls.c (101983) | vfs_syscalls.c (102112) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 |
39 * $FreeBSD: head/sys/kern/vfs_syscalls.c 101983 2002-08-16 12:52:03Z rwatson $ | 39 * $FreeBSD: head/sys/kern/vfs_syscalls.c 102112 2002-08-19 16:43:25Z rwatson $ |
40 */ 41 42/* For 4.3 integer FS ID compatibility */ 43#include "opt_compat.h" 44#include "opt_mac.h" 45 46#include <sys/param.h> 47#include <sys/systm.h> --- 681 unchanged lines hidden (view full) --- 729 if (flags & O_TRUNC) { 730 if ((error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) 731 goto bad; 732 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 733 VATTR_NULL(&vat); 734 vat.va_size = 0; 735 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 736#ifdef MAC | 40 */ 41 42/* For 4.3 integer FS ID compatibility */ 43#include "opt_compat.h" 44#include "opt_mac.h" 45 46#include <sys/param.h> 47#include <sys/systm.h> --- 681 unchanged lines hidden (view full) --- 729 if (flags & O_TRUNC) { 730 if ((error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) 731 goto bad; 732 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 733 VATTR_NULL(&vat); 734 vat.va_size = 0; 735 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 736#ifdef MAC |
737 error = mac_check_vnode_op(td->td_ucred, vp, 738 MAC_OP_VNODE_WRITE); | 737 error = mac_check_vnode_write(td->td_ucred, vp); |
739 if (error == 0) 740#endif 741 error = VOP_SETATTR(vp, &vat, td->td_ucred, td); 742 VOP_UNLOCK(vp, 0, td); 743 vn_finished_write(mp); 744 if (error) 745 goto bad; 746 } --- 1616 unchanged lines hidden (view full) --- 2363 return (error); 2364 } 2365 NDFREE(&nd, NDF_ONLY_PNBUF); 2366 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 2367 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 2368 if (vp->v_type == VDIR) 2369 error = EISDIR; 2370#ifdef MAC | 738 if (error == 0) 739#endif 740 error = VOP_SETATTR(vp, &vat, td->td_ucred, td); 741 VOP_UNLOCK(vp, 0, td); 742 vn_finished_write(mp); 743 if (error) 744 goto bad; 745 } --- 1616 unchanged lines hidden (view full) --- 2362 return (error); 2363 } 2364 NDFREE(&nd, NDF_ONLY_PNBUF); 2365 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 2366 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 2367 if (vp->v_type == VDIR) 2368 error = EISDIR; 2369#ifdef MAC |
2371 else if ((error = mac_check_vnode_op(td->td_ucred, vp, 2372 MAC_OP_VNODE_WRITE))) {} | 2370 else if ((error = mac_check_vnode_write(td->td_ucred, vp))) {} |
2373#endif 2374 else if ((error = vn_writechk(vp)) == 0 && 2375 (error = VOP_ACCESS(vp, VWRITE, td->td_ucred, td)) == 0) { 2376 VATTR_NULL(&vattr); 2377 vattr.va_size = SCARG(uap, length); 2378 error = VOP_SETATTR(vp, &vattr, td->td_ucred, td); 2379 } 2380 vput(vp); --- 40 unchanged lines hidden (view full) --- 2421 fdrop(fp, td); 2422 return (error); 2423 } 2424 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 2425 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 2426 if (vp->v_type == VDIR) 2427 error = EISDIR; 2428#ifdef MAC | 2371#endif 2372 else if ((error = vn_writechk(vp)) == 0 && 2373 (error = VOP_ACCESS(vp, VWRITE, td->td_ucred, td)) == 0) { 2374 VATTR_NULL(&vattr); 2375 vattr.va_size = SCARG(uap, length); 2376 error = VOP_SETATTR(vp, &vattr, td->td_ucred, td); 2377 } 2378 vput(vp); --- 40 unchanged lines hidden (view full) --- 2419 fdrop(fp, td); 2420 return (error); 2421 } 2422 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 2423 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 2424 if (vp->v_type == VDIR) 2425 error = EISDIR; 2426#ifdef MAC |
2429 else if ((error = mac_check_vnode_op(td->td_ucred, vp, 2430 MAC_OP_VNODE_WRITE))) {} | 2427 else if ((error = mac_check_vnode_write(td->td_ucred, vp))) {} |
2431#endif 2432 else if ((error = vn_writechk(vp)) == 0) { 2433 VATTR_NULL(&vattr); 2434 vattr.va_size = SCARG(uap, length); 2435 error = VOP_SETATTR(vp, &vattr, fp->f_cred, td); 2436 } 2437 VOP_UNLOCK(vp, 0, td); 2438 vn_finished_write(mp); --- 901 unchanged lines hidden (view full) --- 3340 VOP_UNLOCK(vp, 0, td); /* XXX */ 3341 if ((error = vn_start_write(NULL, &mp, V_WAIT | PCATCH)) != 0) { 3342 vrele(vp); 3343 return (error); 3344 } 3345 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 3346 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); /* XXX */ 3347#ifdef MAC | 2428#endif 2429 else if ((error = vn_writechk(vp)) == 0) { 2430 VATTR_NULL(&vattr); 2431 vattr.va_size = SCARG(uap, length); 2432 error = VOP_SETATTR(vp, &vattr, fp->f_cred, td); 2433 } 2434 VOP_UNLOCK(vp, 0, td); 2435 vn_finished_write(mp); --- 901 unchanged lines hidden (view full) --- 3337 VOP_UNLOCK(vp, 0, td); /* XXX */ 3338 if ((error = vn_start_write(NULL, &mp, V_WAIT | PCATCH)) != 0) { 3339 vrele(vp); 3340 return (error); 3341 } 3342 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 3343 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); /* XXX */ 3344#ifdef MAC |
3348 error = mac_check_vnode_op(td->td_ucred, vp, 3349 MAC_OP_VNODE_WRITE); | 3345 error = mac_check_vnode_write(td->td_ucred, vp); |
3350 if (error == 0) { 3351#endif 3352 VATTR_NULL(vap); 3353 vap->va_size = 0; 3354 error = VOP_SETATTR(vp, vap, td->td_ucred, td); 3355#ifdef MAC 3356 } 3357#endif --- 609 unchanged lines hidden --- | 3346 if (error == 0) { 3347#endif 3348 VATTR_NULL(vap); 3349 vap->va_size = 0; 3350 error = VOP_SETATTR(vp, vap, td->td_ucred, td); 3351#ifdef MAC 3352 } 3353#endif --- 609 unchanged lines hidden --- |