Deleted Added
sdiff udiff text old ( 101983 ) new ( 102112 )
full compact
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 101983 2002-08-16 12:52:03Z 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
737 error = mac_check_vnode_op(td->td_ucred, vp,
738 MAC_OP_VNODE_WRITE);
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
2371 else if ((error = mac_check_vnode_op(td->td_ucred, vp,
2372 MAC_OP_VNODE_WRITE))) {}
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
2429 else if ((error = mac_check_vnode_op(td->td_ucred, vp,
2430 MAC_OP_VNODE_WRITE))) {}
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
3348 error = mac_check_vnode_op(td->td_ucred, vp,
3349 MAC_OP_VNODE_WRITE);
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 ---