Deleted Added
full compact
vfs_syscalls.c (195458) vfs_syscalls.c (195926)
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.

--- 21 unchanged lines hidden (view full) ---

30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
35 */
36
37#include <sys/cdefs.h>
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.

--- 21 unchanged lines hidden (view full) ---

30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
35 */
36
37#include <sys/cdefs.h>
38__FBSDID("$FreeBSD: head/sys/kern/vfs_syscalls.c 195458 2009-07-08 15:23:18Z trasz $");
38__FBSDID("$FreeBSD: head/sys/kern/vfs_syscalls.c 195926 2009-07-28 21:52:24Z rwatson $");
39
40#include "opt_compat.h"
41#include "opt_kdtrace.h"
42#include "opt_ktrace.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/bio.h>

--- 327 unchanged lines hidden (view full) ---

374 AUDIT_ARG_FD(fd);
375 error = getvnode(td->td_proc->p_fd, fd, &fp);
376 if (error)
377 return (error);
378 vp = fp->f_vnode;
379 vfslocked = VFS_LOCK_GIANT(vp->v_mount);
380 vn_lock(vp, LK_SHARED | LK_RETRY);
381#ifdef AUDIT
39
40#include "opt_compat.h"
41#include "opt_kdtrace.h"
42#include "opt_ktrace.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/bio.h>

--- 327 unchanged lines hidden (view full) ---

374 AUDIT_ARG_FD(fd);
375 error = getvnode(td->td_proc->p_fd, fd, &fp);
376 if (error)
377 return (error);
378 vp = fp->f_vnode;
379 vfslocked = VFS_LOCK_GIANT(vp->v_mount);
380 vn_lock(vp, LK_SHARED | LK_RETRY);
381#ifdef AUDIT
382 AUDIT_ARG_VNODE(vp, ARG_VNODE1);
382 AUDIT_ARG_VNODE1(vp);
383#endif
384 mp = vp->v_mount;
385 if (mp)
386 vfs_ref(mp);
387 VOP_UNLOCK(vp, 0);
388 fdrop(fp, td);
389 if (mp == NULL) {
390 error = EBADF;

--- 356 unchanged lines hidden (view full) ---

747 AUDIT_ARG_FD(uap->fd);
748 if ((error = getvnode(fdp, uap->fd, &fp)) != 0)
749 return (error);
750 vp = fp->f_vnode;
751 VREF(vp);
752 fdrop(fp, td);
753 vfslocked = VFS_LOCK_GIANT(vp->v_mount);
754 vn_lock(vp, LK_SHARED | LK_RETRY);
383#endif
384 mp = vp->v_mount;
385 if (mp)
386 vfs_ref(mp);
387 VOP_UNLOCK(vp, 0);
388 fdrop(fp, td);
389 if (mp == NULL) {
390 error = EBADF;

--- 356 unchanged lines hidden (view full) ---

747 AUDIT_ARG_FD(uap->fd);
748 if ((error = getvnode(fdp, uap->fd, &fp)) != 0)
749 return (error);
750 vp = fp->f_vnode;
751 VREF(vp);
752 fdrop(fp, td);
753 vfslocked = VFS_LOCK_GIANT(vp->v_mount);
754 vn_lock(vp, LK_SHARED | LK_RETRY);
755 AUDIT_ARG_VNODE(vp, ARG_VNODE1);
755 AUDIT_ARG_VNODE1(vp);
756 error = change_dir(vp, td);
757 while (!error && (mp = vp->v_mountedhere) != NULL) {
758 int tvfslocked;
759 if (vfs_busy(mp, 0))
760 continue;
761 tvfslocked = VFS_LOCK_GIANT(mp);
762 error = VFS_ROOT(mp, LK_SHARED, &tdp);
763 vfs_unbusy(mp);

--- 2010 unchanged lines hidden (view full) ---

2774
2775 AUDIT_ARG_FD(uap->fd);
2776 AUDIT_ARG_FFLAGS(uap->flags);
2777 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
2778 return (error);
2779 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
2780#ifdef AUDIT
2781 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
756 error = change_dir(vp, td);
757 while (!error && (mp = vp->v_mountedhere) != NULL) {
758 int tvfslocked;
759 if (vfs_busy(mp, 0))
760 continue;
761 tvfslocked = VFS_LOCK_GIANT(mp);
762 error = VFS_ROOT(mp, LK_SHARED, &tdp);
763 vfs_unbusy(mp);

--- 2010 unchanged lines hidden (view full) ---

2774
2775 AUDIT_ARG_FD(uap->fd);
2776 AUDIT_ARG_FFLAGS(uap->flags);
2777 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
2778 return (error);
2779 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
2780#ifdef AUDIT
2781 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
2782 AUDIT_ARG_VNODE(fp->f_vnode, ARG_VNODE1);
2782 AUDIT_ARG_VNODE1(fp->f_vnode);
2783 VOP_UNLOCK(fp->f_vnode, 0);
2784#endif
2785 error = setfflags(td, fp->f_vnode, uap->flags);
2786 VFS_UNLOCK_GIANT(vfslocked);
2787 fdrop(fp, td);
2788 return (error);
2789}
2790

--- 144 unchanged lines hidden (view full) ---

2935
2936 AUDIT_ARG_FD(uap->fd);
2937 AUDIT_ARG_MODE(uap->mode);
2938 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
2939 return (error);
2940 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
2941#ifdef AUDIT
2942 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
2783 VOP_UNLOCK(fp->f_vnode, 0);
2784#endif
2785 error = setfflags(td, fp->f_vnode, uap->flags);
2786 VFS_UNLOCK_GIANT(vfslocked);
2787 fdrop(fp, td);
2788 return (error);
2789}
2790

--- 144 unchanged lines hidden (view full) ---

2935
2936 AUDIT_ARG_FD(uap->fd);
2937 AUDIT_ARG_MODE(uap->mode);
2938 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
2939 return (error);
2940 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
2941#ifdef AUDIT
2942 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
2943 AUDIT_ARG_VNODE(fp->f_vnode, ARG_VNODE1);
2943 AUDIT_ARG_VNODE1(fp->f_vnode);
2944 VOP_UNLOCK(fp->f_vnode, 0);
2945#endif
2946 error = setfmode(td, fp->f_vnode, uap->mode);
2947 VFS_UNLOCK_GIANT(vfslocked);
2948 fdrop(fp, td);
2949 return (error);
2950}
2951

--- 160 unchanged lines hidden (view full) ---

3112
3113 AUDIT_ARG_FD(uap->fd);
3114 AUDIT_ARG_OWNER(uap->uid, uap->gid);
3115 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
3116 return (error);
3117 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
3118#ifdef AUDIT
3119 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
2944 VOP_UNLOCK(fp->f_vnode, 0);
2945#endif
2946 error = setfmode(td, fp->f_vnode, uap->mode);
2947 VFS_UNLOCK_GIANT(vfslocked);
2948 fdrop(fp, td);
2949 return (error);
2950}
2951

--- 160 unchanged lines hidden (view full) ---

3112
3113 AUDIT_ARG_FD(uap->fd);
3114 AUDIT_ARG_OWNER(uap->uid, uap->gid);
3115 if ((error = getvnode(td->td_proc->p_fd, uap->fd, &fp)) != 0)
3116 return (error);
3117 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
3118#ifdef AUDIT
3119 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
3120 AUDIT_ARG_VNODE(fp->f_vnode, ARG_VNODE1);
3120 AUDIT_ARG_VNODE1(fp->f_vnode);
3121 VOP_UNLOCK(fp->f_vnode, 0);
3122#endif
3123 error = setfown(td, fp->f_vnode, uap->uid, uap->gid);
3124 VFS_UNLOCK_GIANT(vfslocked);
3125 fdrop(fp, td);
3126 return (error);
3127}
3128

--- 219 unchanged lines hidden (view full) ---

3348 AUDIT_ARG_FD(fd);
3349 if ((error = getutimes(tptr, tptrseg, ts)) != 0)
3350 return (error);
3351 if ((error = getvnode(td->td_proc->p_fd, fd, &fp)) != 0)
3352 return (error);
3353 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
3354#ifdef AUDIT
3355 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
3121 VOP_UNLOCK(fp->f_vnode, 0);
3122#endif
3123 error = setfown(td, fp->f_vnode, uap->uid, uap->gid);
3124 VFS_UNLOCK_GIANT(vfslocked);
3125 fdrop(fp, td);
3126 return (error);
3127}
3128

--- 219 unchanged lines hidden (view full) ---

3348 AUDIT_ARG_FD(fd);
3349 if ((error = getutimes(tptr, tptrseg, ts)) != 0)
3350 return (error);
3351 if ((error = getvnode(td->td_proc->p_fd, fd, &fp)) != 0)
3352 return (error);
3353 vfslocked = VFS_LOCK_GIANT(fp->f_vnode->v_mount);
3354#ifdef AUDIT
3355 vn_lock(fp->f_vnode, LK_SHARED | LK_RETRY);
3356 AUDIT_ARG_VNODE(fp->f_vnode, ARG_VNODE1);
3356 AUDIT_ARG_VNODE1(fp->f_vnode);
3357 VOP_UNLOCK(fp->f_vnode, 0);
3358#endif
3359 error = setutimes(td, fp->f_vnode, ts, 2, tptr == NULL);
3360 VFS_UNLOCK_GIANT(vfslocked);
3361 fdrop(fp, td);
3362 return (error);
3363}
3364

--- 143 unchanged lines hidden (view full) ---

3508 goto drop;
3509 if (MNT_SHARED_WRITES(mp) ||
3510 ((mp == NULL) && MNT_SHARED_WRITES(vp->v_mount))) {
3511 lock_flags = LK_SHARED;
3512 } else {
3513 lock_flags = LK_EXCLUSIVE;
3514 }
3515 vn_lock(vp, lock_flags | LK_RETRY);
3357 VOP_UNLOCK(fp->f_vnode, 0);
3358#endif
3359 error = setutimes(td, fp->f_vnode, ts, 2, tptr == NULL);
3360 VFS_UNLOCK_GIANT(vfslocked);
3361 fdrop(fp, td);
3362 return (error);
3363}
3364

--- 143 unchanged lines hidden (view full) ---

3508 goto drop;
3509 if (MNT_SHARED_WRITES(mp) ||
3510 ((mp == NULL) && MNT_SHARED_WRITES(vp->v_mount))) {
3511 lock_flags = LK_SHARED;
3512 } else {
3513 lock_flags = LK_EXCLUSIVE;
3514 }
3515 vn_lock(vp, lock_flags | LK_RETRY);
3516 AUDIT_ARG_VNODE(vp, ARG_VNODE1);
3516 AUDIT_ARG_VNODE1(vp);
3517 if (vp->v_object != NULL) {
3518 VM_OBJECT_LOCK(vp->v_object);
3519 vm_object_page_clean(vp->v_object, 0, 0, 0);
3520 VM_OBJECT_UNLOCK(vp->v_object);
3521 }
3522 error = VOP_FSYNC(vp, MNT_WAIT, td);
3523
3524 VOP_UNLOCK(vp, 0);

--- 573 unchanged lines hidden (view full) ---

4098 aiov.iov_len = count;
4099 auio.uio_iov = &aiov;
4100 auio.uio_iovcnt = 1;
4101 auio.uio_rw = UIO_READ;
4102 auio.uio_segflg = UIO_USERSPACE;
4103 auio.uio_td = td;
4104 auio.uio_resid = count;
4105 vn_lock(vp, LK_SHARED | LK_RETRY);
3517 if (vp->v_object != NULL) {
3518 VM_OBJECT_LOCK(vp->v_object);
3519 vm_object_page_clean(vp->v_object, 0, 0, 0);
3520 VM_OBJECT_UNLOCK(vp->v_object);
3521 }
3522 error = VOP_FSYNC(vp, MNT_WAIT, td);
3523
3524 VOP_UNLOCK(vp, 0);

--- 573 unchanged lines hidden (view full) ---

4098 aiov.iov_len = count;
4099 auio.uio_iov = &aiov;
4100 auio.uio_iovcnt = 1;
4101 auio.uio_rw = UIO_READ;
4102 auio.uio_segflg = UIO_USERSPACE;
4103 auio.uio_td = td;
4104 auio.uio_resid = count;
4105 vn_lock(vp, LK_SHARED | LK_RETRY);
4106 AUDIT_ARG_VNODE(vp, ARG_VNODE1);
4106 AUDIT_ARG_VNODE1(vp);
4107 loff = auio.uio_offset = fp->f_offset;
4108#ifdef MAC
4109 error = mac_vnode_check_readdir(td->td_ucred, vp);
4110 if (error == 0)
4111#endif
4112 error = VOP_READDIR(vp, &auio, fp->f_cred, &eofflag, NULL,
4113 NULL);
4114 fp->f_offset = auio.uio_offset;

--- 548 unchanged lines hidden ---
4107 loff = auio.uio_offset = fp->f_offset;
4108#ifdef MAC
4109 error = mac_vnode_check_readdir(td->td_ucred, vp);
4110 if (error == 0)
4111#endif
4112 error = VOP_READDIR(vp, &auio, fp->f_cred, &eofflag, NULL,
4113 NULL);
4114 fp->f_offset = auio.uio_offset;

--- 548 unchanged lines hidden ---