summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/vfs_syscalls.c138
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));
}
/*