aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile/kernel/compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/tile/kernel/compat.c')
-rw-r--r--arch/tile/kernel/compat.c28
1 files changed, 6 insertions, 22 deletions
diff --git a/arch/tile/kernel/compat.c b/arch/tile/kernel/compat.c
index a374c99deeb6..b1e06d041555 100644
--- a/arch/tile/kernel/compat.c
+++ b/arch/tile/kernel/compat.c
@@ -88,34 +88,14 @@ long compat_sys_sched_rr_get_interval(compat_pid_t pid,
88 mm_segment_t old_fs = get_fs(); 88 mm_segment_t old_fs = get_fs();
89 89
90 set_fs(KERNEL_DS); 90 set_fs(KERNEL_DS);
91 ret = sys_sched_rr_get_interval(pid, (struct timespec __user *)&t); 91 ret = sys_sched_rr_get_interval(pid,
92 (struct timespec __force __user *)&t);
92 set_fs(old_fs); 93 set_fs(old_fs);
93 if (put_compat_timespec(&t, interval)) 94 if (put_compat_timespec(&t, interval))
94 return -EFAULT; 95 return -EFAULT;
95 return ret; 96 return ret;
96} 97}
97 98
98ssize_t compat_sys_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
99 size_t count)
100{
101 mm_segment_t old_fs = get_fs();
102 int ret;
103 off_t of;
104
105 if (offset && get_user(of, offset))
106 return -EFAULT;
107
108 set_fs(KERNEL_DS);
109 ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL,
110 count);
111 set_fs(old_fs);
112
113 if (offset && put_user(of, offset))
114 return -EFAULT;
115 return ret;
116}
117
118
119/* 99/*
120 * The usual compat_sys_msgsnd() and _msgrcv() seem to be assuming 100 * The usual compat_sys_msgsnd() and _msgrcv() seem to be assuming
121 * some different calling convention than our normal 32-bit tile code. 101 * some different calling convention than our normal 32-bit tile code.
@@ -177,6 +157,10 @@ long tile_compat_sys_msgrcv(int msqid,
177/* Pass full 64-bit values through ptrace. */ 157/* Pass full 64-bit values through ptrace. */
178#define compat_sys_ptrace tile_compat_sys_ptrace 158#define compat_sys_ptrace tile_compat_sys_ptrace
179 159
160/*
161 * Note that we can't include <linux/unistd.h> here since the header
162 * guard will defeat us; <asm/unistd.h> checks for __SYSCALL as well.
163 */
180void *compat_sys_call_table[__NR_syscalls] = { 164void *compat_sys_call_table[__NR_syscalls] = {
181 [0 ... __NR_syscalls-1] = sys_ni_syscall, 165 [0 ... __NR_syscalls-1] = sys_ni_syscall,
182#include <asm/unistd.h> 166#include <asm/unistd.h>