diff options
-rw-r--r-- | sys/kern/vfs_syscalls.c | 138 |
1 files changed, 59 insertions, 79 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 880c32b6185..8d6cead5b21 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vfs_syscalls.c,v 1.193 2013/06/05 01:26:00 guenther Exp $ */ +/* $OpenBSD: vfs_syscalls.c,v 1.194 2013/08/08 20:19:13 guenther Exp $ */ /* $NetBSD: vfs_syscalls.c,v 1.71 1996/04/23 10:29:02 mycroft Exp $ */ /* @@ -76,28 +76,22 @@ int getdirentries_internal(struct proc *, int, char *, int, off_t *, register_t *); int doopenat(struct proc *, int, const char *, int, mode_t, register_t *); -int domknodat(struct proc *, int, const char *, mode_t, dev_t, register_t *); -int domkfifoat(struct proc *, int, const char *, mode_t, register_t *); -int dolinkat(struct proc *, int, const char *, int, const char *, int, - register_t *); -int dosymlinkat(struct proc *, const char *, int, const char *, register_t *); -int dounlinkat(struct proc *, int, const char *, int, register_t *); -int dofaccessat(struct proc *, int, const char *, int, int, register_t *); -int dofstatat(struct proc *, int, const char *, struct stat *, int, - register_t *); +int domknodat(struct proc *, int, const char *, mode_t, dev_t); +int domkfifoat(struct proc *, int, const char *, mode_t); +int dolinkat(struct proc *, int, const char *, int, const char *, int); +int dosymlinkat(struct proc *, const char *, int, const char *); +int dounlinkat(struct proc *, int, const char *, int); +int dofaccessat(struct proc *, int, const char *, int, int); +int dofstatat(struct proc *, int, const char *, struct stat *, int); int doreadlinkat(struct proc *, int, const char *, char *, size_t, register_t *); -int dofchmodat(struct proc *, int, const char *, mode_t, int, register_t *); -int dofchownat(struct proc *, int, const char *, uid_t, gid_t, int, - register_t *); -int dorenameat(struct proc *, int, const char *, int, const char *, - register_t *); -int domkdirat(struct proc *, int, const char *, mode_t, register_t *); -int doutimensat(struct proc *, int, const char *, struct timespec [2], - int, register_t *); -int dovutimens(struct proc *, struct vnode *, struct timespec [2], - register_t *); -int dofutimens(struct proc *, int, struct timespec [2], register_t *); +int dofchmodat(struct proc *, int, const char *, mode_t, int); +int dofchownat(struct proc *, int, const char *, uid_t, gid_t, int); +int dorenameat(struct proc *, int, const char *, int, const char *); +int domkdirat(struct proc *, int, const char *, mode_t); +int doutimensat(struct proc *, int, const char *, struct timespec [2], int); +int dovutimens(struct proc *, struct vnode *, struct timespec [2]); +int dofutimens(struct proc *, int, struct timespec [2]); /* * Virtual File System System Calls @@ -1394,7 +1388,7 @@ sys_mknod(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (domknodat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), - SCARG(uap, dev), retval)); + SCARG(uap, dev))); } int @@ -1408,12 +1402,11 @@ sys_mknodat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (domknodat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), SCARG(uap, dev), retval)); + SCARG(uap, mode), SCARG(uap, dev))); } int -domknodat(struct proc *p, int fd, const char *path, mode_t mode, dev_t dev, - register_t *retval) +domknodat(struct proc *p, int fd, const char *path, mode_t mode, dev_t dev) { struct vnode *vp; struct vattr vattr; @@ -1476,8 +1469,7 @@ sys_mkfifo(struct proc *p, void *v, register_t *retval) syscallarg(mode_t) mode; } */ *uap = v; - return (domkfifoat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), - retval)); + return (domkfifoat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode))); } int @@ -1490,11 +1482,11 @@ sys_mkfifoat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (domkfifoat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), retval)); + SCARG(uap, mode))); } int -domkfifoat(struct proc *p, int fd, const char *path, mode_t mode, register_t *retval) +domkfifoat(struct proc *p, int fd, const char *path, mode_t mode) { #ifndef FIFO return (EOPNOTSUPP); @@ -1535,7 +1527,7 @@ sys_link(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dolinkat(p, AT_FDCWD, SCARG(uap, path), AT_FDCWD, - SCARG(uap, link), AT_SYMLINK_FOLLOW, retval)); + SCARG(uap, link), AT_SYMLINK_FOLLOW)); } int @@ -1550,12 +1542,12 @@ sys_linkat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dolinkat(p, SCARG(uap, fd1), SCARG(uap, path1), - SCARG(uap, fd2), SCARG(uap, path2), SCARG(uap, flag), retval)); + SCARG(uap, fd2), SCARG(uap, path2), SCARG(uap, flag))); } int dolinkat(struct proc *p, int fd1, const char *path1, int fd2, - const char *path2, int flag, register_t *retval) + const char *path2, int flag) { struct vnode *vp; struct nameidata nd; @@ -1607,8 +1599,7 @@ sys_symlink(struct proc *p, void *v, register_t *retval) syscallarg(const char *) link; } */ *uap = v; - return (dosymlinkat(p, SCARG(uap, path), AT_FDCWD, SCARG(uap, link), - retval)); + return (dosymlinkat(p, SCARG(uap, path), AT_FDCWD, SCARG(uap, link))); } int @@ -1621,12 +1612,11 @@ sys_symlinkat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dosymlinkat(p, SCARG(uap, path), SCARG(uap, fd), - SCARG(uap, link), retval)); + SCARG(uap, link))); } int -dosymlinkat(struct proc *p, const char *upath, int fd, const char *link, - register_t *retval) +dosymlinkat(struct proc *p, const char *upath, int fd, const char *link) { struct vattr vattr; char *path; @@ -1669,7 +1659,7 @@ sys_unlink(struct proc *p, void *v, register_t *retval) syscallarg(const char *) path; } */ *uap = v; - return (dounlinkat(p, AT_FDCWD, SCARG(uap, path), 0, retval)); + return (dounlinkat(p, AT_FDCWD, SCARG(uap, path), 0)); } int @@ -1682,12 +1672,11 @@ sys_unlinkat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dounlinkat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, flag), retval)); + SCARG(uap, flag))); } int -dounlinkat(struct proc *p, int fd, const char *path, int flag, - register_t *retval) +dounlinkat(struct proc *p, int fd, const char *path, int flag) { struct vnode *vp; int error; @@ -1817,7 +1806,7 @@ sys_access(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofaccessat(p, AT_FDCWD, SCARG(uap, path), - SCARG(uap, flags), 0, retval)); + SCARG(uap, flags), 0)); } int @@ -1831,12 +1820,11 @@ sys_faccessat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofaccessat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, amode), SCARG(uap, flag), retval)); + SCARG(uap, amode), SCARG(uap, flag))); } int -dofaccessat(struct proc *p, int fd, const char *path, int amode, int flag, - register_t *retval) +dofaccessat(struct proc *p, int fd, const char *path, int amode, int flag) { struct vnode *vp; int error; @@ -1894,8 +1882,7 @@ sys_stat(struct proc *p, void *v, register_t *retval) syscallarg(struct stat *) ub; } */ *uap = v; - return (dofstatat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, ub), 0, - retval)); + return (dofstatat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, ub), 0)); } int @@ -1909,12 +1896,11 @@ sys_fstatat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofstatat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, buf), SCARG(uap, flag), retval)); + SCARG(uap, buf), SCARG(uap, flag))); } int -dofstatat(struct proc *p, int fd, const char *path, struct stat *buf, - int flag, register_t *retval) +dofstatat(struct proc *p, int fd, const char *path, struct stat *buf, int flag) { struct stat sb; int error, follow; @@ -1955,7 +1941,7 @@ sys_lstat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofstatat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, ub), - AT_SYMLINK_NOFOLLOW, retval)); + AT_SYMLINK_NOFOLLOW)); } /* @@ -2146,8 +2132,7 @@ sys_chmod(struct proc *p, void *v, register_t *retval) syscallarg(mode_t) mode; } */ *uap = v; - return (dofchmodat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), - 0, retval)); + return (dofchmodat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), 0)); } int @@ -2161,12 +2146,11 @@ sys_fchmodat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofchmodat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), SCARG(uap, flag), retval)); + SCARG(uap, mode), SCARG(uap, flag))); } int -dofchmodat(struct proc *p, int fd, const char *path, mode_t mode, int flag, - register_t *retval) +dofchmodat(struct proc *p, int fd, const char *path, mode_t mode, int flag) { struct vnode *vp; struct vattr vattr; @@ -2244,7 +2228,7 @@ sys_chown(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofchownat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, uid), - SCARG(uap, gid), 0, retval)); + SCARG(uap, gid), 0)); } int @@ -2259,12 +2243,12 @@ sys_fchownat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dofchownat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, uid), SCARG(uap, gid), SCARG(uap, flag), retval)); + SCARG(uap, uid), SCARG(uap, gid), SCARG(uap, flag))); } int dofchownat(struct proc *p, int fd, const char *path, uid_t uid, gid_t gid, - int flag, register_t *retval) + int flag) { struct vnode *vp; struct vattr vattr; @@ -2432,7 +2416,7 @@ sys_utimes(struct proc *p, void *v, register_t *retval) } else ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW; - return (doutimensat(p, AT_FDCWD, SCARG(uap, path), ts, 0, retval)); + return (doutimensat(p, AT_FDCWD, SCARG(uap, path), ts, 0)); } int @@ -2458,12 +2442,12 @@ sys_utimensat(struct proc *p, void *v, register_t *retval) ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW; return (doutimensat(p, SCARG(uap, fd), SCARG(uap, path), ts, - SCARG(uap, flag), retval)); + SCARG(uap, flag))); } int doutimensat(struct proc *p, int fd, const char *path, - struct timespec ts[2], int flag, register_t *retval) + struct timespec ts[2], int flag) { struct vnode *vp; int error, follow; @@ -2478,12 +2462,11 @@ doutimensat(struct proc *p, int fd, const char *path, return (error); vp = nd.ni_vp; - return (dovutimens(p, vp, ts, retval)); + return (dovutimens(p, vp, ts)); } int -dovutimens(struct proc *p, struct vnode *vp, struct timespec ts[2], - register_t *retval) +dovutimens(struct proc *p, struct vnode *vp, struct timespec ts[2]) { struct vattr vattr; struct timespec now; @@ -2563,7 +2546,7 @@ sys_futimes(struct proc *p, void *v, register_t *retval) } else ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW; - return (dofutimens(p, SCARG(uap, fd), ts, retval)); + return (dofutimens(p, SCARG(uap, fd), ts)); } int @@ -2585,11 +2568,11 @@ sys_futimens(struct proc *p, void *v, register_t *retval) } else ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW; - return (dofutimens(p, SCARG(uap, fd), ts, retval)); + return (dofutimens(p, SCARG(uap, fd), ts)); } int -dofutimens(struct proc *p, int fd, struct timespec ts[2], register_t *retval) +dofutimens(struct proc *p, int fd, struct timespec ts[2]) { struct file *fp; struct vnode *vp; @@ -2601,7 +2584,7 @@ dofutimens(struct proc *p, int fd, struct timespec ts[2], register_t *retval) vref(vp); FRELE(fp, p); - return (dovutimens(p, vp, ts, retval)); + return (dovutimens(p, vp, ts)); } /* @@ -2721,7 +2704,7 @@ sys_rename(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dorenameat(p, AT_FDCWD, SCARG(uap, from), AT_FDCWD, - SCARG(uap, to), retval)); + SCARG(uap, to))); } int @@ -2735,12 +2718,12 @@ sys_renameat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (dorenameat(p, SCARG(uap, fromfd), SCARG(uap, from), - SCARG(uap, tofd), SCARG(uap, to), retval)); + SCARG(uap, tofd), SCARG(uap, to))); } int dorenameat(struct proc *p, int fromfd, const char *from, int tofd, - const char *to, register_t *retval) + const char *to) { struct vnode *tvp, *fvp, *tdvp; struct nameidata fromnd, tond; @@ -2828,8 +2811,7 @@ sys_mkdir(struct proc *p, void *v, register_t *retval) syscallarg(mode_t) mode; } */ *uap = v; - return (domkdirat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), - retval)); + return (domkdirat(p, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode))); } int @@ -2842,12 +2824,11 @@ sys_mkdirat(struct proc *p, void *v, register_t *retval) } */ *uap = v; return (domkdirat(p, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), retval)); + SCARG(uap, mode))); } int -domkdirat(struct proc *p, int fd, const char *path, mode_t mode, - register_t *retval) +domkdirat(struct proc *p, int fd, const char *path, mode_t mode) { struct vnode *vp; struct vattr vattr; @@ -2888,8 +2869,7 @@ sys_rmdir(struct proc *p, void *v, register_t *retval) syscallarg(const char *) path; } */ *uap = v; - return (dounlinkat(p, AT_FDCWD, SCARG(uap, path), AT_REMOVEDIR, - retval)); + return (dounlinkat(p, AT_FDCWD, SCARG(uap, path), AT_REMOVEDIR)); } /* |