summaryrefslogtreecommitdiffstats
path: root/ipc/compat.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 21:51:41 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 21:51:41 +0200
commit7125764c5d1a5c72d522f1011b6cc8b8100b48fe (patch)
tree678f3355ac872a4379b28dbe36f5beddd0e284d8 /ipc/compat.c
parentMerge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kerne... (diff)
parentcompat: Fix sparse address space warnings (diff)
downloadlinux-7125764c5d1a5c72d522f1011b6cc8b8100b48fe.tar.xz
linux-7125764c5d1a5c72d522f1011b6cc8b8100b48fe.zip
Merge branch 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull compat time conversion changes from Peter Anvin: "Despite the branch name this is really neither an x86 nor an x32-specific patchset, although it the implementation of the discussions that followed the x32 security hole a few months ago. This removes get/put_compat_timespec/val() and replaces them with compat_get/put_timespec/val() which are savvy as to the current status of COMPAT_USE_64BIT_TIME. It removes several unused and/or incorrect/misleading functions (like compat_put_timeval_convert which doesn't in fact do any conversion) and also replaces several open-coded implementations what is now called compat_convert_timespec() with that function" * 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: compat: Fix sparse address space warnings compat: Get rid of (get|put)_compat_time(val|spec)
Diffstat (limited to 'ipc/compat.c')
-rw-r--r--ipc/compat.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/ipc/compat.c b/ipc/compat.c
index 98b9016cab6c..a4695ada3275 100644
--- a/ipc/compat.c
+++ b/ipc/compat.c
@@ -753,14 +753,8 @@ COMPAT_SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsems,
unsigned, nsops,
const struct compat_timespec __user *, timeout)
{
- struct timespec __user *ts64 = NULL;
- if (timeout) {
- struct timespec ts;
- ts64 = compat_alloc_user_space(sizeof(*ts64));
- if (get_compat_timespec(&ts, timeout))
- return -EFAULT;
- if (copy_to_user(ts64, &ts, sizeof(ts)))
- return -EFAULT;
- }
+ struct timespec __user *ts64;
+ if (compat_convert_timespec(&ts64, timeout))
+ return -EFAULT;
return sys_semtimedop(semid, tsems, nsops, ts64);
}