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 --- |