summaryrefslogtreecommitdiff
path: root/kernel/sys.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-03-03 12:49:06 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-03-03 22:59:36 -0500
commit8d2d5c4a251924e4f70657e96a2a3f87647544f0 (patch)
treeada470f9738d49bfc2d55cb01f8c62188ce8ae12 /kernel/sys.c
parent35280bd4a3fa841897e2638437607fdec6c34f31 (diff)
downloadlwn-8d2d5c4a251924e4f70657e96a2a3f87647544f0.tar.gz
lwn-8d2d5c4a251924e4f70657e96a2a3f87647544f0.zip
switch getrusage() to COMPAT_SYSCALL_DEFINE
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/sys.c')
-rw-r--r--kernel/sys.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index 81f56445fba9..fd2b5259ad7a 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1784,6 +1784,20 @@ SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru)
return getrusage(current, who, ru);
}
+#ifdef CONFIG_COMPAT
+COMPAT_SYSCALL_DEFINE2(getrusage, int, who, struct compat_rusage __user *, ru)
+{
+ struct rusage r;
+
+ if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN &&
+ who != RUSAGE_THREAD)
+ return -EINVAL;
+
+ k_getrusage(current, who, &r);
+ return put_compat_rusage(&r, ru);
+}
+#endif
+
SYSCALL_DEFINE1(umask, int, mask)
{
mask = xchg(&current->fs->umask, mask & S_IRWXUGO);