diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2012-09-17 10:15:35 +0100 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2012-09-17 10:15:35 +0100 |
commit | 8dab9815b9205daee265561bb662af0ff7f6dc06 (patch) | |
tree | 2066ae6ebcc6d9ce1c94b0c6f3ed2c8825f49cad | |
parent | 9d4d04154db9b9333a69341830a39a134714c8ca (diff) | |
download | linux-aarch64-8dab9815b9205daee265561bb662af0ff7f6dc06.tar.gz |
Revert "arm64: Use generic compat_sys_sendfile and compat_sys_sched_rr_get_interval"
This reverts commit ec4c071122b5e6a7f5700006d4a893de5982685e.
The compat_sys_sendfile and compat_sys_sched_rr_get_interval generic
prototypes introduced by previous patches break PowerPC.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
-rw-r--r-- | arch/arm64/include/asm/unistd32.h | 2 | ||||
-rw-r--r-- | arch/arm64/kernel/sys_compat.c | 35 |
2 files changed, 35 insertions, 2 deletions
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 4161b4c8bff..a50405f5ee4 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -754,7 +754,5 @@ __SYSCALL(__NR_syncfs, sys_syncfs) #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_SIGPROCMASK #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND -#define __ARCH_WANT_COMPAT_SYS_SENDFILE -#define __ARCH_WANT_COMPAT_SYS_SCHED_RR_GET_INTERVAL #endif /* __ASM_UNISTD32_H */ diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c index 46822e830ba..967e92fdff0 100644 --- a/arch/arm64/kernel/sys_compat.c +++ b/arch/arm64/kernel/sys_compat.c @@ -69,6 +69,41 @@ out: return error; } +asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid, + struct compat_timespec __user *interval) +{ + struct timespec t; + int ret; + mm_segment_t old_fs = get_fs(); + + set_fs(KERNEL_DS); + ret = sys_sched_rr_get_interval(pid, (struct timespec __user *)&t); + set_fs(old_fs); + if (put_compat_timespec(&t, interval)) + return -EFAULT; + return ret; +} + +asmlinkage int compat_sys_sendfile(int out_fd, int in_fd, + compat_off_t __user *offset, s32 count) +{ + mm_segment_t old_fs = get_fs(); + int ret; + off_t of; + + if (offset && get_user(of, offset)) + return -EFAULT; + + set_fs(KERNEL_DS); + ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL, + count); + set_fs(old_fs); + + if (offset && put_user(of, offset)) + return -EFAULT; + return ret; +} + static inline void do_compat_cache_op(unsigned long start, unsigned long end, int flags) { |