Merge branch 'x86-x32-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / ipc / compat_mq.c
index d587472..90d29f5 100644 (file)
@@ -64,20 +64,6 @@ COMPAT_SYSCALL_DEFINE4(mq_open, const char __user *, u_name,
        return sys_mq_open(u_name, oflag, mode, p);
 }
 
-static int compat_prepare_timeout(struct timespec __user **p,
-                                 const struct compat_timespec __user *u)
-{
-       struct timespec ts;
-       if (!u) {
-               *p = NULL;
-               return 0;
-       }
-       *p = compat_alloc_user_space(sizeof(ts));
-       if (get_compat_timespec(&ts, u) || copy_to_user(*p, &ts, sizeof(ts)))
-               return -EFAULT;
-       return 0;
-}
-
 COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes,
                       const char __user *, u_msg_ptr,
                       compat_size_t, msg_len, unsigned int, msg_prio,
@@ -85,7 +71,7 @@ COMPAT_SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes,
 {
        struct timespec __user *u_ts;
 
-       if (compat_prepare_timeout(&u_ts, u_abs_timeout))
+       if (compat_convert_timespec(&u_ts, u_abs_timeout))
                return -EFAULT;
 
        return sys_mq_timedsend(mqdes, u_msg_ptr, msg_len,
@@ -98,7 +84,8 @@ COMPAT_SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes,
                       const struct compat_timespec __user *, u_abs_timeout)
 {
        struct timespec __user *u_ts;
-       if (compat_prepare_timeout(&u_ts, u_abs_timeout))
+
+       if (compat_convert_timespec(&u_ts, u_abs_timeout))
                return -EFAULT;
 
        return sys_mq_timedreceive(mqdes, u_msg_ptr, msg_len,