vfs_extattr.c (102112) | vfs_extattr.c (102129) |
---|---|
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_extattr.c 102112 2002-08-19 16:43:25Z rwatson $ | 39 * $FreeBSD: head/sys/kern/vfs_extattr.c 102129 2002-08-19 19:04:53Z 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_write(td->td_ucred, vp); | 737 error = mac_check_vnode_write(td->td_ucred, fp->f_cred, vp); |
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 | 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 |
2370 else if ((error = mac_check_vnode_write(td->td_ucred, vp))) {} | 2370 else if ((error = mac_check_vnode_write(td->td_ucred, NOCRED, vp))) { 2371 } |
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 | 2372#endif 2373 else if ((error = vn_writechk(vp)) == 0 && 2374 (error = VOP_ACCESS(vp, VWRITE, td->td_ucred, td)) == 0) { 2375 VATTR_NULL(&vattr); 2376 vattr.va_size = SCARG(uap, length); 2377 error = VOP_SETATTR(vp, &vattr, td->td_ucred, td); 2378 } 2379 vput(vp); --- 40 unchanged lines hidden (view full) --- 2420 fdrop(fp, td); 2421 return (error); 2422 } 2423 VOP_LEASE(vp, td, td->td_ucred, LEASE_WRITE); 2424 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); 2425 if (vp->v_type == VDIR) 2426 error = EISDIR; 2427#ifdef MAC |
2427 else if ((error = mac_check_vnode_write(td->td_ucred, vp))) {} | 2428 else if ((error = mac_check_vnode_write(td->td_ucred, fp->f_cred, 2429 vp))) { 2430 } |
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 | 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 |
3345 error = mac_check_vnode_write(td->td_ucred, vp); | 3348 /* 3349 * We don't yet have fp->f_cred, so use td->td_ucred, which 3350 * should be right. 3351 */ 3352 error = mac_check_vnode_write(td->td_ucred, td->td_ucred, vp); |
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 --- | 3353 if (error == 0) { 3354#endif 3355 VATTR_NULL(vap); 3356 vap->va_size = 0; 3357 error = VOP_SETATTR(vp, vap, td->td_ucred, td); 3358#ifdef MAC 3359 } 3360#endif --- 609 unchanged lines hidden --- |