aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 10:21:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 10:21:43 -0400
commit08d76760832993050ad8c25e63b56773ef2ca303 (patch)
treeabdcf148dfe43cd49f30f204f1dac6978107a508 /arch
parent5f56886521d6ddd3648777fae44d82382dd8c87f (diff)
parent99e621f796d7f0341a51e8cdf32b81663b10b448 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal
Pull compat cleanup from Al Viro: "Mostly about syscall wrappers this time; there will be another pile with patches in the same general area from various people, but I'd rather push those after both that and vfs.git pile are in." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: syscalls.h: slightly reduce the jungles of macros get rid of union semop in sys_semctl(2) arguments make do_mremap() static sparc: no need to sign-extend in sync_file_range() wrapper ppc compat wrappers for add_key(2) and request_key(2) are pointless x86: trim sys_ia32.h x86: sys32_kill and sys32_mprotect are pointless get rid of compat_sys_semctl() and friends in case of ARCH_WANT_OLD_COMPAT_IPC merge compat sys_ipc instances consolidate compat lookup_dcookie() convert vmsplice to COMPAT_SYSCALL_DEFINE switch getrusage() to COMPAT_SYSCALL_DEFINE switch epoll_pwait to COMPAT_SYSCALL_DEFINE convert sendfile{,64} to COMPAT_SYSCALL_DEFINE switch signalfd{,4}() to COMPAT_SYSCALL_DEFINE make SYSCALL_DEFINE<n>-generated wrappers do asmlinkage_protect make HAVE_SYSCALL_WRAPPERS unconditional consolidate cond_syscall and SYSCALL_ALIAS declarations teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long get rid of duplicate logics in __SC_....[1-6] definitions
Diffstat (limited to 'arch')
-rw-r--r--arch/Kconfig3
-rw-r--r--arch/alpha/Kconfig1
-rw-r--r--arch/alpha/include/asm/linkage.h4
-rw-r--r--arch/alpha/include/asm/unistd.h12
-rw-r--r--arch/arm/include/asm/unistd.h8
-rw-r--r--arch/arm64/kernel/sys32.S7
-rw-r--r--arch/avr32/include/asm/unistd.h8
-rw-r--r--arch/blackfin/include/asm/unistd.h8
-rw-r--r--arch/cris/include/asm/unistd.h8
-rw-r--r--arch/frv/include/asm/unistd.h10
-rw-r--r--arch/h8300/include/asm/linkage.h2
-rw-r--r--arch/h8300/include/asm/unistd.h7
-rw-r--r--arch/ia64/include/asm/linkage.h4
-rw-r--r--arch/ia64/include/asm/unistd.h10
-rw-r--r--arch/m32r/include/asm/unistd.h10
-rw-r--r--arch/m68k/include/asm/unistd.h8
-rw-r--r--arch/microblaze/include/asm/unistd.h8
-rw-r--r--arch/mips/Kconfig1
-rw-r--r--arch/mips/include/asm/linkage.h3
-rw-r--r--arch/mips/include/asm/unistd.h8
-rw-r--r--arch/mips/kernel/linux32.c119
-rw-r--r--arch/mips/kernel/scall64-n32.S8
-rw-r--r--arch/mips/kernel/scall64-o32.S6
-rw-r--r--arch/mn10300/include/asm/unistd.h10
-rw-r--r--arch/parisc/include/asm/unistd.h8
-rw-r--r--arch/parisc/kernel/sys_parisc32.c41
-rw-r--r--arch/parisc/kernel/syscall_table.S8
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/include/asm/linkage.h13
-rw-r--r--arch/powerpc/include/asm/systbl.h10
-rw-r--r--arch/powerpc/include/asm/unistd.h6
-rw-r--r--arch/powerpc/include/uapi/asm/linkage.h6
-rw-r--r--arch/powerpc/kernel/sys_ppc32.c109
-rw-r--r--arch/s390/Kconfig1
-rw-r--r--arch/s390/include/asm/unistd.h8
-rw-r--r--arch/s390/kernel/compat_linux.c86
-rw-r--r--arch/s390/kernel/compat_linux.h5
-rw-r--r--arch/s390/kernel/compat_wrapper.S64
-rw-r--r--arch/s390/kernel/sys_s390.c14
-rw-r--r--arch/s390/kernel/syscalls.S18
-rw-r--r--arch/sh/include/asm/unistd.h8
-rw-r--r--arch/sparc/Kconfig1
-rw-r--r--arch/sparc/include/asm/unistd.h8
-rw-r--r--arch/sparc/kernel/sys32.S4
-rw-r--r--arch/sparc/kernel/sys_sparc32.c75
-rw-r--r--arch/sparc/kernel/sys_sparc_64.c6
-rw-r--r--arch/sparc/kernel/systbls_64.S8
-rw-r--r--arch/tile/Kconfig1
-rw-r--r--arch/tile/kernel/compat.c6
-rw-r--r--arch/x86/ia32/Makefile3
-rw-r--r--arch/x86/ia32/ipc32.c54
-rw-r--r--arch/x86/ia32/sys_ia32.c37
-rw-r--r--arch/x86/include/asm/sys_ia32.h12
-rw-r--r--arch/x86/include/asm/syscalls.h4
-rw-r--r--arch/x86/include/asm/unistd.h8
-rw-r--r--arch/x86/kernel/tls.c14
-rw-r--r--arch/x86/syscalls/syscall_32.tbl10
-rw-r--r--arch/x86/um/tls_32.c5
-rw-r--r--arch/xtensa/include/asm/unistd.h8
59 files changed, 74 insertions, 869 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index 1455579791ec..99f0e17df429 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -157,9 +157,6 @@ config ARCH_USE_BUILTIN_BSWAP
157 instructions should set this. And it shouldn't hurt to set it 157 instructions should set this. And it shouldn't hurt to set it
158 on architectures that don't have such instructions. 158 on architectures that don't have such instructions.
159 159
160config HAVE_SYSCALL_WRAPPERS
161 bool
162
163config KRETPROBES 160config KRETPROBES
164 def_bool y 161 def_bool y
165 depends on KPROBES && HAVE_KRETPROBES 162 depends on KPROBES && HAVE_KRETPROBES
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 8a33ba01301f..8629127640cf 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -4,7 +4,6 @@ config ALPHA
4 select HAVE_AOUT 4 select HAVE_AOUT
5 select HAVE_IDE 5 select HAVE_IDE
6 select HAVE_OPROFILE 6 select HAVE_OPROFILE
7 select HAVE_SYSCALL_WRAPPERS
8 select HAVE_PCSPKR_PLATFORM 7 select HAVE_PCSPKR_PLATFORM
9 select HAVE_PERF_EVENTS 8 select HAVE_PERF_EVENTS
10 select HAVE_DMA_ATTRS 9 select HAVE_DMA_ATTRS
diff --git a/arch/alpha/include/asm/linkage.h b/arch/alpha/include/asm/linkage.h
index 291c2d01c44f..7cfd06e8c935 100644
--- a/arch/alpha/include/asm/linkage.h
+++ b/arch/alpha/include/asm/linkage.h
@@ -1,6 +1,8 @@
1#ifndef __ASM_LINKAGE_H 1#ifndef __ASM_LINKAGE_H
2#define __ASM_LINKAGE_H 2#define __ASM_LINKAGE_H
3 3
4/* Nothing to see here... */ 4#define cond_syscall(x) asm(".weak\t" #x "\n" #x " = sys_ni_syscall")
5#define SYSCALL_ALIAS(alias, name) \
6 asm ( #alias " = " #name "\n\t.globl " #alias)
5 7
6#endif 8#endif
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h
index 6d6fe7ab5473..43baee17acdf 100644
--- a/arch/alpha/include/asm/unistd.h
+++ b/arch/alpha/include/asm/unistd.h
@@ -18,16 +18,4 @@
18#define __ARCH_WANT_SYS_VFORK 18#define __ARCH_WANT_SYS_VFORK
19#define __ARCH_WANT_SYS_CLONE 19#define __ARCH_WANT_SYS_CLONE
20 20
21/* "Conditional" syscalls. What we want is
22
23 __attribute__((weak,alias("sys_ni_syscall")))
24
25 but that raises the problem of what type to give the symbol. If we use
26 a prototype, it'll conflict with the definition given in this file and
27 others. If we use __typeof, we discover that not all symbols actually
28 have declarations. If we use no prototype, then we get warnings from
29 -Wstrict-prototypes. Ho hum. */
30
31#define cond_syscall(x) asm(".weak\t" #x "\n" #x " = sys_ni_syscall")
32
33#endif /* _ALPHA_UNISTD_H */ 21#endif /* _ALPHA_UNISTD_H */
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index e4ddfb39ca34..141baa3f9a72 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -44,14 +44,6 @@
44#define __ARCH_WANT_SYS_CLONE 44#define __ARCH_WANT_SYS_CLONE
45 45
46/* 46/*
47 * "Conditional" syscalls
48 *
49 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
50 * but it doesn't work on all toolchains, so we just do it by hand
51 */
52#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
53
54/*
55 * Unimplemented (or alternatively implemented) syscalls 47 * Unimplemented (or alternatively implemented) syscalls
56 */ 48 */
57#define __IGNORE_fadvise64_64 49#define __IGNORE_fadvise64_64
diff --git a/arch/arm64/kernel/sys32.S b/arch/arm64/kernel/sys32.S
index 9416d045a687..db01aa978c41 100644
--- a/arch/arm64/kernel/sys32.S
+++ b/arch/arm64/kernel/sys32.S
@@ -84,13 +84,6 @@ compat_sys_readahead_wrapper:
84 b sys_readahead 84 b sys_readahead
85ENDPROC(compat_sys_readahead_wrapper) 85ENDPROC(compat_sys_readahead_wrapper)
86 86
87compat_sys_lookup_dcookie:
88 orr x0, x0, x1, lsl #32
89 mov w1, w2
90 mov w2, w3
91 b sys_lookup_dcookie
92ENDPROC(compat_sys_lookup_dcookie)
93
94compat_sys_fadvise64_64_wrapper: 87compat_sys_fadvise64_64_wrapper:
95 mov w6, w1 88 mov w6, w1
96 orr x1, x2, x3, lsl #32 89 orr x1, x2, x3, lsl #32
diff --git a/arch/avr32/include/asm/unistd.h b/arch/avr32/include/asm/unistd.h
index dc4d5a931112..c1eb080e45fe 100644
--- a/arch/avr32/include/asm/unistd.h
+++ b/arch/avr32/include/asm/unistd.h
@@ -41,12 +41,4 @@
41#define __ARCH_WANT_SYS_VFORK 41#define __ARCH_WANT_SYS_VFORK
42#define __ARCH_WANT_SYS_CLONE 42#define __ARCH_WANT_SYS_CLONE
43 43
44/*
45 * "Conditional" syscalls
46 *
47 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
48 * but it doesn't work on all toolchains, so we just do it by hand
49 */
50#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
51
52#endif /* __ASM_AVR32_UNISTD_H */ 44#endif /* __ASM_AVR32_UNISTD_H */
diff --git a/arch/blackfin/include/asm/unistd.h b/arch/blackfin/include/asm/unistd.h
index 04e83ea8d5cc..c35414bdf7bd 100644
--- a/arch/blackfin/include/asm/unistd.h
+++ b/arch/blackfin/include/asm/unistd.h
@@ -20,12 +20,4 @@
20#define __ARCH_WANT_SYS_NICE 20#define __ARCH_WANT_SYS_NICE
21#define __ARCH_WANT_SYS_VFORK 21#define __ARCH_WANT_SYS_VFORK
22 22
23/*
24 * "Conditional" syscalls
25 *
26 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
27 * but it doesn't work on all toolchains, so we just do it by hand
28 */
29#define cond_syscall(x) asm(".weak\t_" #x "\n\t.set\t_" #x ",_sys_ni_syscall");
30
31#endif /* __ASM_BFIN_UNISTD_H */ 23#endif /* __ASM_BFIN_UNISTD_H */
diff --git a/arch/cris/include/asm/unistd.h b/arch/cris/include/asm/unistd.h
index be57a988bfb9..0ff3f6889842 100644
--- a/arch/cris/include/asm/unistd.h
+++ b/arch/cris/include/asm/unistd.h
@@ -34,12 +34,4 @@
34#define __ARCH_WANT_SYS_VFORK 34#define __ARCH_WANT_SYS_VFORK
35#define __ARCH_WANT_SYS_CLONE 35#define __ARCH_WANT_SYS_CLONE
36 36
37/*
38 * "Conditional" syscalls
39 *
40 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
41 * but it doesn't work on all toolchains, so we just do it by hand
42 */
43#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
44
45#endif /* _ASM_CRIS_UNISTD_H_ */ 37#endif /* _ASM_CRIS_UNISTD_H_ */
diff --git a/arch/frv/include/asm/unistd.h b/arch/frv/include/asm/unistd.h
index 4cfcc7bba25a..70ec7293dce7 100644
--- a/arch/frv/include/asm/unistd.h
+++ b/arch/frv/include/asm/unistd.h
@@ -31,14 +31,4 @@
31#define __ARCH_WANT_SYS_VFORK 31#define __ARCH_WANT_SYS_VFORK
32#define __ARCH_WANT_SYS_CLONE 32#define __ARCH_WANT_SYS_CLONE
33 33
34/*
35 * "Conditional" syscalls
36 *
37 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
38 * but it doesn't work on all toolchains, so we just do it by hand
39 */
40#ifndef cond_syscall
41#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
42#endif
43
44#endif /* _ASM_UNISTD_H_ */ 34#endif /* _ASM_UNISTD_H_ */
diff --git a/arch/h8300/include/asm/linkage.h b/arch/h8300/include/asm/linkage.h
index 6f4df7d46180..1d81604fb0ad 100644
--- a/arch/h8300/include/asm/linkage.h
+++ b/arch/h8300/include/asm/linkage.h
@@ -2,7 +2,5 @@
2#define _H8300_LINKAGE_H 2#define _H8300_LINKAGE_H
3 3
4#undef SYMBOL_NAME_LABEL 4#undef SYMBOL_NAME_LABEL
5#undef SYMBOL_NAME
6#define SYMBOL_NAME_LABEL(_name_) _##_name_##: 5#define SYMBOL_NAME_LABEL(_name_) _##_name_##:
7#define SYMBOL_NAME(_name_) _##_name_
8#endif 6#endif
diff --git a/arch/h8300/include/asm/unistd.h b/arch/h8300/include/asm/unistd.h
index 6721856d841b..ab671ecf5196 100644
--- a/arch/h8300/include/asm/unistd.h
+++ b/arch/h8300/include/asm/unistd.h
@@ -33,11 +33,4 @@
33#define __ARCH_WANT_SYS_VFORK 33#define __ARCH_WANT_SYS_VFORK
34#define __ARCH_WANT_SYS_CLONE 34#define __ARCH_WANT_SYS_CLONE
35 35
36/*
37 * "Conditional" syscalls
38 */
39#define cond_syscall(name) \
40 asm (".weak\t_" #name "\n" \
41 ".set\t_" #name ",_sys_ni_syscall");
42
43#endif /* _ASM_H8300_UNISTD_H_ */ 36#endif /* _ASM_H8300_UNISTD_H_ */
diff --git a/arch/ia64/include/asm/linkage.h b/arch/ia64/include/asm/linkage.h
index ef22a45c1890..787575701f1c 100644
--- a/arch/ia64/include/asm/linkage.h
+++ b/arch/ia64/include/asm/linkage.h
@@ -11,4 +11,8 @@
11 11
12#endif 12#endif
13 13
14#define cond_syscall(x) asm(".weak\t" #x "#\n" #x "#\t=\tsys_ni_syscall#")
15#define SYSCALL_ALIAS(alias, name) \
16 asm ( #alias "# = " #name "#\n\t.globl " #alias "#")
17
14#endif 18#endif
diff --git a/arch/ia64/include/asm/unistd.h b/arch/ia64/include/asm/unistd.h
index 096373800f73..afd45e0d552e 100644
--- a/arch/ia64/include/asm/unistd.h
+++ b/arch/ia64/include/asm/unistd.h
@@ -46,15 +46,5 @@ asmlinkage unsigned long sys_mmap2(
46struct pt_regs; 46struct pt_regs;
47asmlinkage long sys_ia64_pipe(void); 47asmlinkage long sys_ia64_pipe(void);
48 48
49/*
50 * "Conditional" syscalls
51 *
52 * Note, this macro can only be used in the file which defines sys_ni_syscall, i.e., in
53 * kernel/sys_ni.c. This version causes warnings because the declaration isn't a
54 * proper prototype, but we can't use __typeof__ either, because not all cond_syscall()
55 * declarations have prototypes at the moment.
56 */
57#define cond_syscall(x) asmlinkage long x (void) __attribute__((weak,alias("sys_ni_syscall")))
58
59#endif /* !__ASSEMBLY__ */ 49#endif /* !__ASSEMBLY__ */
60#endif /* _ASM_IA64_UNISTD_H */ 50#endif /* _ASM_IA64_UNISTD_H */
diff --git a/arch/m32r/include/asm/unistd.h b/arch/m32r/include/asm/unistd.h
index 555629b05267..59db80193454 100644
--- a/arch/m32r/include/asm/unistd.h
+++ b/arch/m32r/include/asm/unistd.h
@@ -48,14 +48,4 @@
48#define __IGNORE_getresgid 48#define __IGNORE_getresgid
49#define __IGNORE_chown 49#define __IGNORE_chown
50 50
51/*
52 * "Conditional" syscalls
53 *
54 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
55 * but it doesn't work on all toolchains, so we just do it by hand
56 */
57#ifndef cond_syscall
58#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
59#endif
60
61#endif /* _ASM_M32R_UNISTD_H */ 51#endif /* _ASM_M32R_UNISTD_H */
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h
index 6cd92671ca5e..014f288fc813 100644
--- a/arch/m68k/include/asm/unistd.h
+++ b/arch/m68k/include/asm/unistd.h
@@ -32,12 +32,4 @@
32#define __ARCH_WANT_SYS_FORK 32#define __ARCH_WANT_SYS_FORK
33#define __ARCH_WANT_SYS_VFORK 33#define __ARCH_WANT_SYS_VFORK
34 34
35/*
36 * "Conditional" syscalls
37 *
38 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
39 * but it doesn't work on all toolchains, so we just do it by hand
40 */
41#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
42
43#endif /* _ASM_M68K_UNISTD_H_ */ 35#endif /* _ASM_M68K_UNISTD_H_ */
diff --git a/arch/microblaze/include/asm/unistd.h b/arch/microblaze/include/asm/unistd.h
index b3778391d9cc..6dece2d002dc 100644
--- a/arch/microblaze/include/asm/unistd.h
+++ b/arch/microblaze/include/asm/unistd.h
@@ -37,13 +37,5 @@
37#define __ARCH_WANT_SYS_VFORK 37#define __ARCH_WANT_SYS_VFORK
38#define __ARCH_WANT_SYS_FORK 38#define __ARCH_WANT_SYS_FORK
39 39
40/*
41 * "Conditional" syscalls
42 *
43 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
44 * but it doesn't work on all toolchains, so we just do it by hand
45 */
46#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
47
48#endif /* __ASSEMBLY__ */ 40#endif /* __ASSEMBLY__ */
49#endif /* _ASM_MICROBLAZE_UNISTD_H */ 41#endif /* _ASM_MICROBLAZE_UNISTD_H */
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 007a917a980d..e5f3794744f1 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1739,7 +1739,6 @@ config 32BIT
1739config 64BIT 1739config 64BIT
1740 bool "64-bit kernel" 1740 bool "64-bit kernel"
1741 depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL 1741 depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
1742 select HAVE_SYSCALL_WRAPPERS
1743 help 1742 help
1744 Select this option if you want to build a 64-bit kernel. 1743 Select this option if you want to build a 64-bit kernel.
1745 1744
diff --git a/arch/mips/include/asm/linkage.h b/arch/mips/include/asm/linkage.h
index e9a940d1b0c6..2767dda9e309 100644
--- a/arch/mips/include/asm/linkage.h
+++ b/arch/mips/include/asm/linkage.h
@@ -6,5 +6,8 @@
6#endif 6#endif
7 7
8#define __weak __attribute__((weak)) 8#define __weak __attribute__((weak))
9#define cond_syscall(x) asm(".weak\t" #x "\n" #x "\t=\tsys_ni_syscall")
10#define SYSCALL_ALIAS(alias, name) \
11 asm ( #alias " = " #name "\n\t.globl " #alias)
9 12
10#endif 13#endif
diff --git a/arch/mips/include/asm/unistd.h b/arch/mips/include/asm/unistd.h
index 64f661e32879..63c9c886173a 100644
--- a/arch/mips/include/asm/unistd.h
+++ b/arch/mips/include/asm/unistd.h
@@ -63,12 +63,4 @@
63 63
64#endif /* !__ASSEMBLY__ */ 64#endif /* !__ASSEMBLY__ */
65 65
66/*
67 * "Conditional" syscalls
68 *
69 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
70 * but it doesn't work on all toolchains, so we just do it by hand
71 */
72#define cond_syscall(x) asm(".weak\t" #x "\n" #x "\t=\tsys_ni_syscall")
73
74#endif /* _ASM_UNISTD_H */ 66#endif /* _ASM_UNISTD_H */
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index db9655f08892..d1d576b765f5 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -119,99 +119,6 @@ SYSCALL_DEFINE6(32_pwrite, unsigned int, fd, const char __user *, buf,
119 return sys_pwrite64(fd, buf, count, merge_64(a4, a5)); 119 return sys_pwrite64(fd, buf, count, merge_64(a4, a5));
120} 120}
121 121
122#ifdef CONFIG_SYSVIPC
123
124SYSCALL_DEFINE6(32_ipc, u32, call, long, first, long, second, long, third,
125 unsigned long, ptr, unsigned long, fifth)
126{
127 int version, err;
128
129 version = call >> 16; /* hack for backward compatibility */
130 call &= 0xffff;
131
132 switch (call) {
133 case SEMOP:
134 /* struct sembuf is the same on 32 and 64bit :)) */
135 err = sys_semtimedop(first, compat_ptr(ptr), second, NULL);
136 break;
137 case SEMTIMEDOP:
138 err = compat_sys_semtimedop(first, compat_ptr(ptr), second,
139 compat_ptr(fifth));
140 break;
141 case SEMGET:
142 err = sys_semget(first, second, third);
143 break;
144 case SEMCTL:
145 err = compat_sys_semctl(first, second, third, compat_ptr(ptr));
146 break;
147 case MSGSND:
148 err = compat_sys_msgsnd(first, second, third, compat_ptr(ptr));
149 break;
150 case MSGRCV:
151 err = compat_sys_msgrcv(first, second, fifth, third,
152 version, compat_ptr(ptr));
153 break;
154 case MSGGET:
155 err = sys_msgget((key_t) first, second);
156 break;
157 case MSGCTL:
158 err = compat_sys_msgctl(first, second, compat_ptr(ptr));
159 break;
160 case SHMAT:
161 err = compat_sys_shmat(first, second, third, version,
162 compat_ptr(ptr));
163 break;
164 case SHMDT:
165 err = sys_shmdt(compat_ptr(ptr));
166 break;
167 case SHMGET:
168 err = sys_shmget(first, (unsigned)second, third);
169 break;
170 case SHMCTL:
171 err = compat_sys_shmctl(first, second, compat_ptr(ptr));
172 break;
173 default:
174 err = -ENOSYS;
175 break;
176 }
177
178 return err;
179}
180
181#else
182
183SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third,
184 u32, ptr, u32, fifth)
185{
186 return -ENOSYS;
187}
188
189#endif /* CONFIG_SYSVIPC */
190
191#ifdef CONFIG_MIPS32_N32
192SYSCALL_DEFINE4(n32_semctl, int, semid, int, semnum, int, cmd, u32, arg)
193{
194 /* compat_sys_semctl expects a pointer to union semun */
195 u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
196 if (put_user(arg, uptr))
197 return -EFAULT;
198 return compat_sys_semctl(semid, semnum, cmd, uptr);
199}
200
201SYSCALL_DEFINE4(n32_msgsnd, int, msqid, u32, msgp, unsigned int, msgsz,
202 int, msgflg)
203{
204 return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp));
205}
206
207SYSCALL_DEFINE5(n32_msgrcv, int, msqid, u32, msgp, size_t, msgsz,
208 int, msgtyp, int, msgflg)
209{
210 return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
211 compat_ptr(msgp));
212}
213#endif
214
215SYSCALL_DEFINE1(32_personality, unsigned long, personality) 122SYSCALL_DEFINE1(32_personality, unsigned long, personality)
216{ 123{
217 unsigned int p = personality & 0xffffffff; 124 unsigned int p = personality & 0xffffffff;
@@ -226,26 +133,6 @@ SYSCALL_DEFINE1(32_personality, unsigned long, personality)
226 return ret; 133 return ret;
227} 134}
228 135
229SYSCALL_DEFINE4(32_sendfile, long, out_fd, long, in_fd,
230 compat_off_t __user *, offset, s32, count)
231{
232 mm_segment_t old_fs = get_fs();
233 int ret;
234 off_t of;
235
236 if (offset && get_user(of, offset))
237 return -EFAULT;
238
239 set_fs(KERNEL_DS);
240 ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL, count);
241 set_fs(old_fs);
242
243 if (offset && put_user(of, offset))
244 return -EFAULT;
245
246 return ret;
247}
248
249asmlinkage ssize_t sys32_readahead(int fd, u32 pad0, u64 a2, u64 a3, 136asmlinkage ssize_t sys32_readahead(int fd, u32 pad0, u64 a2, u64 a3,
250 size_t count) 137 size_t count)
251{ 138{
@@ -279,12 +166,6 @@ asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_a2,
279 merge_64(len_a4, len_a5)); 166 merge_64(len_a4, len_a5));
280} 167}
281 168
282asmlinkage long sys32_lookup_dcookie(u32 a0, u32 a1, char __user *buf,
283 size_t len)
284{
285 return sys_lookup_dcookie(merge_64(a0, a1), buf, len);
286}
287
288SYSCALL_DEFINE6(32_fanotify_mark, int, fanotify_fd, unsigned int, flags, 169SYSCALL_DEFINE6(32_fanotify_mark, int, fanotify_fd, unsigned int, flags,
289 u64, a3, u64, a4, int, dfd, const char __user *, pathname) 170 u64, a3, u64, a4, int, dfd, const char __user *, pathname)
290{ 171{
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index 693d60b0855f..edcb6594e7b5 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -143,7 +143,7 @@ EXPORT(sysn32_call_table)
143 PTR compat_sys_setitimer 143 PTR compat_sys_setitimer
144 PTR sys_alarm 144 PTR sys_alarm
145 PTR sys_getpid 145 PTR sys_getpid
146 PTR sys_32_sendfile 146 PTR compat_sys_sendfile
147 PTR sys_socket /* 6040 */ 147 PTR sys_socket /* 6040 */
148 PTR sys_connect 148 PTR sys_connect
149 PTR sys_accept 149 PTR sys_accept
@@ -168,11 +168,11 @@ EXPORT(sysn32_call_table)
168 PTR sys_newuname 168 PTR sys_newuname
169 PTR sys_semget 169 PTR sys_semget
170 PTR sys_semop 170 PTR sys_semop
171 PTR sys_n32_semctl 171 PTR compat_sys_semctl
172 PTR sys_shmdt /* 6065 */ 172 PTR sys_shmdt /* 6065 */
173 PTR sys_msgget 173 PTR sys_msgget
174 PTR sys_n32_msgsnd 174 PTR compat_sys_msgsnd
175 PTR sys_n32_msgrcv 175 PTR compat_sys_msgrcv
176 PTR compat_sys_msgctl 176 PTR compat_sys_msgctl
177 PTR compat_sys_fcntl /* 6070 */ 177 PTR compat_sys_fcntl /* 6070 */
178 PTR sys_flock 178 PTR sys_flock
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index af8887f779f1..103bfe570fe8 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -309,7 +309,7 @@ sys_call_table:
309 PTR compat_sys_wait4 309 PTR compat_sys_wait4
310 PTR sys_swapoff /* 4115 */ 310 PTR sys_swapoff /* 4115 */
311 PTR compat_sys_sysinfo 311 PTR compat_sys_sysinfo
312 PTR sys_32_ipc 312 PTR compat_sys_ipc
313 PTR sys_fsync 313 PTR sys_fsync
314 PTR sys32_sigreturn 314 PTR sys32_sigreturn
315 PTR __sys_clone /* 4120 */ 315 PTR __sys_clone /* 4120 */
@@ -399,7 +399,7 @@ sys_call_table:
399 PTR sys_capget 399 PTR sys_capget
400 PTR sys_capset /* 4205 */ 400 PTR sys_capset /* 4205 */
401 PTR compat_sys_sigaltstack 401 PTR compat_sys_sigaltstack
402 PTR sys_32_sendfile 402 PTR compat_sys_sendfile
403 PTR sys_ni_syscall 403 PTR sys_ni_syscall
404 PTR sys_ni_syscall 404 PTR sys_ni_syscall
405 PTR sys_mips_mmap2 /* 4210 */ 405 PTR sys_mips_mmap2 /* 4210 */
@@ -439,7 +439,7 @@ sys_call_table:
439 PTR compat_sys_io_submit 439 PTR compat_sys_io_submit
440 PTR sys_io_cancel /* 4245 */ 440 PTR sys_io_cancel /* 4245 */
441 PTR sys_exit_group 441 PTR sys_exit_group
442 PTR sys32_lookup_dcookie 442 PTR compat_sys_lookup_dcookie
443 PTR sys_epoll_create 443 PTR sys_epoll_create
444 PTR sys_epoll_ctl 444 PTR sys_epoll_ctl
445 PTR sys_epoll_wait /* 4250 */ 445 PTR sys_epoll_wait /* 4250 */
diff --git a/arch/mn10300/include/asm/unistd.h b/arch/mn10300/include/asm/unistd.h
index 7f9d9adfa51e..9d4e2d1ef90e 100644
--- a/arch/mn10300/include/asm/unistd.h
+++ b/arch/mn10300/include/asm/unistd.h
@@ -45,14 +45,4 @@
45#define __ARCH_WANT_SYS_VFORK 45#define __ARCH_WANT_SYS_VFORK
46#define __ARCH_WANT_SYS_CLONE 46#define __ARCH_WANT_SYS_CLONE
47 47
48/*
49 * "Conditional" syscalls
50 *
51 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
52 * but it doesn't work on all toolchains, so we just do it by hand
53 */
54#ifndef cond_syscall
55#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
56#endif
57
58#endif /* _ASM_UNISTD_H */ 48#endif /* _ASM_UNISTD_H */
diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h
index ae9a46cbfd92..74d835820ee7 100644
--- a/arch/parisc/include/asm/unistd.h
+++ b/arch/parisc/include/asm/unistd.h
@@ -170,12 +170,4 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
170 170
171#undef STR 171#undef STR
172 172
173/*
174 * "Conditional" syscalls
175 *
176 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
177 * but it doesn't work on all toolchains, so we just do it by hand
178 */
179#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
180
181#endif /* _ASM_PARISC_UNISTD_H_ */ 173#endif /* _ASM_PARISC_UNISTD_H_ */
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index 051c8b90231f..f517e08e7f0d 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -60,47 +60,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23,
60 return -ENOSYS; 60 return -ENOSYS;
61} 61}
62 62
63/* Note: it is necessary to treat out_fd and in_fd as unsigned ints, with the
64 * corresponding cast to a signed int to insure that the proper conversion
65 * (sign extension) between the register representation of a signed int (msr in
66 * 32-bit mode) and the register representation of a signed int (msr in 64-bit
67 * mode) is performed.
68 */
69asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd,
70 compat_off_t __user *offset, compat_size_t count)
71{
72 return compat_sys_sendfile((int)out_fd, (int)in_fd, offset, count);
73}
74
75asmlinkage long sys32_sendfile64(u32 out_fd, u32 in_fd,
76 compat_loff_t __user *offset, compat_size_t count)
77{
78 return sys_sendfile64((int)out_fd, (int)in_fd,
79 (loff_t __user *)offset, count);
80}
81
82asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg)
83{
84 union semun u;
85
86 if (cmd == SETVAL) {
87 /* Ugh. arg is a union of int,ptr,ptr,ptr, so is 8 bytes.
88 * The int should be in the first 4, but our argument
89 * frobbing has left it in the last 4.
90 */
91 u.val = *((int *)&arg + 1);
92 return sys_semctl (semid, semnum, cmd, u);
93 }
94 return sys_semctl (semid, semnum, cmd, arg);
95}
96
97long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
98 size_t len)
99{
100 return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low,
101 buf, len);
102}
103
104asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi, 63asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi,
105 u32 mask_lo, int fd, 64 u32 mask_lo, int fd,
106 const char __user *pathname) 65 const char __user *pathname)
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index f57dc137b8dd..0c9107285e66 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -198,7 +198,7 @@
198 ENTRY_SAME(madvise) 198 ENTRY_SAME(madvise)
199 ENTRY_SAME(clone_wrapper) /* 120 */ 199 ENTRY_SAME(clone_wrapper) /* 120 */
200 ENTRY_SAME(setdomainname) 200 ENTRY_SAME(setdomainname)
201 ENTRY_DIFF(sendfile) 201 ENTRY_COMP(sendfile)
202 /* struct sockaddr... */ 202 /* struct sockaddr... */
203 ENTRY_SAME(recvfrom) 203 ENTRY_SAME(recvfrom)
204 /* struct timex contains longs */ 204 /* struct timex contains longs */
@@ -282,7 +282,7 @@
282 ENTRY_COMP(recvmsg) 282 ENTRY_COMP(recvmsg)
283 ENTRY_SAME(semop) /* 185 */ 283 ENTRY_SAME(semop) /* 185 */
284 ENTRY_SAME(semget) 284 ENTRY_SAME(semget)
285 ENTRY_DIFF(semctl) 285 ENTRY_COMP(semctl)
286 ENTRY_COMP(msgsnd) 286 ENTRY_COMP(msgsnd)
287 ENTRY_COMP(msgrcv) 287 ENTRY_COMP(msgrcv)
288 ENTRY_SAME(msgget) /* 190 */ 288 ENTRY_SAME(msgget) /* 190 */
@@ -304,7 +304,7 @@
304 ENTRY_SAME(gettid) 304 ENTRY_SAME(gettid)
305 ENTRY_OURS(readahead) 305 ENTRY_OURS(readahead)
306 ENTRY_SAME(tkill) 306 ENTRY_SAME(tkill)
307 ENTRY_DIFF(sendfile64) 307 ENTRY_COMP(sendfile64)
308 ENTRY_COMP(futex) /* 210 */ 308 ENTRY_COMP(futex) /* 210 */
309 ENTRY_COMP(sched_setaffinity) 309 ENTRY_COMP(sched_setaffinity)
310 ENTRY_COMP(sched_getaffinity) 310 ENTRY_COMP(sched_getaffinity)
@@ -318,7 +318,7 @@
318 ENTRY_SAME(alloc_hugepages) /* 220 */ 318 ENTRY_SAME(alloc_hugepages) /* 220 */
319 ENTRY_SAME(free_hugepages) 319 ENTRY_SAME(free_hugepages)
320 ENTRY_SAME(exit_group) 320 ENTRY_SAME(exit_group)
321 ENTRY_DIFF(lookup_dcookie) 321 ENTRY_COMP(lookup_dcookie)
322 ENTRY_SAME(epoll_create) 322 ENTRY_SAME(epoll_create)
323 ENTRY_SAME(epoll_ctl) /* 225 */ 323 ENTRY_SAME(epoll_ctl) /* 225 */
324 ENTRY_SAME(epoll_wait) 324 ENTRY_SAME(epoll_wait)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index ea5bb045983a..a0259edae5c9 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -114,7 +114,6 @@ config PPC
114 select USE_GENERIC_SMP_HELPERS if SMP 114 select USE_GENERIC_SMP_HELPERS if SMP
115 select HAVE_OPROFILE 115 select HAVE_OPROFILE
116 select HAVE_DEBUG_KMEMLEAK 116 select HAVE_DEBUG_KMEMLEAK
117 select HAVE_SYSCALL_WRAPPERS if PPC64
118 select GENERIC_ATOMIC64 if PPC32 117 select GENERIC_ATOMIC64 if PPC32
119 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE 118 select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
120 select HAVE_PERF_EVENTS 119 select HAVE_PERF_EVENTS
diff --git a/arch/powerpc/include/asm/linkage.h b/arch/powerpc/include/asm/linkage.h
new file mode 100644
index 000000000000..b36f650a13ff
--- /dev/null
+++ b/arch/powerpc/include/asm/linkage.h
@@ -0,0 +1,13 @@
1#ifndef _ASM_POWERPC_LINKAGE_H
2#define _ASM_POWERPC_LINKAGE_H
3
4#ifdef CONFIG_PPC64
5#define cond_syscall(x) \
6 asm ("\t.weak " #x "\n\t.set " #x ", sys_ni_syscall\n" \
7 "\t.weak ." #x "\n\t.set ." #x ", .sys_ni_syscall\n")
8#define SYSCALL_ALIAS(alias, name) \
9 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
10 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
11#endif
12
13#endif /* _ASM_POWERPC_LINKAGE_H */
diff --git a/arch/powerpc/include/asm/systbl.h b/arch/powerpc/include/asm/systbl.h
index ebbec52d21bd..43523fe0d8b4 100644
--- a/arch/powerpc/include/asm/systbl.h
+++ b/arch/powerpc/include/asm/systbl.h
@@ -190,7 +190,7 @@ SYSCALL_SPU(getcwd)
190SYSCALL_SPU(capget) 190SYSCALL_SPU(capget)
191SYSCALL_SPU(capset) 191SYSCALL_SPU(capset)
192COMPAT_SYS(sigaltstack) 192COMPAT_SYS(sigaltstack)
193SYSX_SPU(sys_sendfile,compat_sys_sendfile_wrapper,sys_sendfile) 193COMPAT_SYS_SPU(sendfile)
194SYSCALL(ni_syscall) 194SYSCALL(ni_syscall)
195SYSCALL(ni_syscall) 195SYSCALL(ni_syscall)
196PPC_SYS(vfork) 196PPC_SYS(vfork)
@@ -230,7 +230,7 @@ COMPAT_SYS_SPU(sched_setaffinity)
230COMPAT_SYS_SPU(sched_getaffinity) 230COMPAT_SYS_SPU(sched_getaffinity)
231SYSCALL(ni_syscall) 231SYSCALL(ni_syscall)
232SYSCALL(ni_syscall) 232SYSCALL(ni_syscall)
233SYSX(sys_ni_syscall,compat_sys_sendfile64_wrapper,sys_sendfile64) 233SYS32ONLY(sendfile64)
234COMPAT_SYS_SPU(io_setup) 234COMPAT_SYS_SPU(io_setup)
235SYSCALL_SPU(io_destroy) 235SYSCALL_SPU(io_destroy)
236COMPAT_SYS_SPU(io_getevents) 236COMPAT_SYS_SPU(io_getevents)
@@ -239,7 +239,7 @@ SYSCALL_SPU(io_cancel)
239SYSCALL(set_tid_address) 239SYSCALL(set_tid_address)
240SYSX_SPU(sys_fadvise64,ppc32_fadvise64,sys_fadvise64) 240SYSX_SPU(sys_fadvise64,ppc32_fadvise64,sys_fadvise64)
241SYSCALL(exit_group) 241SYSCALL(exit_group)
242SYSX(sys_lookup_dcookie,ppc32_lookup_dcookie,sys_lookup_dcookie) 242COMPAT_SYS(lookup_dcookie)
243SYSCALL_SPU(epoll_create) 243SYSCALL_SPU(epoll_create)
244SYSCALL_SPU(epoll_ctl) 244SYSCALL_SPU(epoll_ctl)
245SYSCALL_SPU(epoll_wait) 245SYSCALL_SPU(epoll_wait)
@@ -273,8 +273,8 @@ COMPAT_SYS(mq_timedreceive)
273COMPAT_SYS(mq_notify) 273COMPAT_SYS(mq_notify)
274COMPAT_SYS(mq_getsetattr) 274COMPAT_SYS(mq_getsetattr)
275COMPAT_SYS(kexec_load) 275COMPAT_SYS(kexec_load)
276COMPAT_SYS(add_key) 276SYSCALL(add_key)
277COMPAT_SYS(request_key) 277SYSCALL(request_key)
278COMPAT_SYS(keyctl) 278COMPAT_SYS(keyctl)
279COMPAT_SYS(waitid) 279COMPAT_SYS(waitid)
280SYSCALL(ioprio_set) 280SYSCALL(ioprio_set)
diff --git a/arch/powerpc/include/asm/unistd.h b/arch/powerpc/include/asm/unistd.h
index 1487f0f12293..3ca819f541bf 100644
--- a/arch/powerpc/include/asm/unistd.h
+++ b/arch/powerpc/include/asm/unistd.h
@@ -56,11 +56,5 @@
56#define __ARCH_WANT_SYS_VFORK 56#define __ARCH_WANT_SYS_VFORK
57#define __ARCH_WANT_SYS_CLONE 57#define __ARCH_WANT_SYS_CLONE
58 58
59/*
60 * "Conditional" syscalls
61 */
62#define cond_syscall(x) \
63 asmlinkage long x (void) __attribute__((weak,alias("sys_ni_syscall")))
64
65#endif /* __ASSEMBLY__ */ 59#endif /* __ASSEMBLY__ */
66#endif /* _ASM_POWERPC_UNISTD_H_ */ 60#endif /* _ASM_POWERPC_UNISTD_H_ */
diff --git a/arch/powerpc/include/uapi/asm/linkage.h b/arch/powerpc/include/uapi/asm/linkage.h
deleted file mode 100644
index e1c4ac1cc4ba..000000000000
--- a/arch/powerpc/include/uapi/asm/linkage.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _ASM_POWERPC_LINKAGE_H
2#define _ASM_POWERPC_LINKAGE_H
3
4/* Nothing to see here... */
5
6#endif /* _ASM_POWERPC_LINKAGE_H */
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
index d0bafc0cdf06..cd6e19d263b3 100644
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@ -61,91 +61,6 @@ asmlinkage long ppc32_select(u32 n, compat_ulong_t __user *inp,
61 return compat_sys_select((int)n, inp, outp, exp, compat_ptr(tvp_x)); 61 return compat_sys_select((int)n, inp, outp, exp, compat_ptr(tvp_x));
62} 62}
63 63
64#ifdef CONFIG_SYSVIPC
65long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr,
66 u32 fifth)
67{
68 int version;
69
70 version = call >> 16; /* hack for backward compatibility */
71 call &= 0xffff;
72
73 switch (call) {
74
75 case SEMTIMEDOP:
76 if (fifth)
77 /* sign extend semid */
78 return compat_sys_semtimedop((int)first,
79 compat_ptr(ptr), second,
80 compat_ptr(fifth));
81 /* else fall through for normal semop() */
82 case SEMOP:
83 /* struct sembuf is the same on 32 and 64bit :)) */
84 /* sign extend semid */
85 return sys_semtimedop((int)first, compat_ptr(ptr), second,
86 NULL);
87 case SEMGET:
88 /* sign extend key, nsems */
89 return sys_semget((int)first, (int)second, third);
90 case SEMCTL:
91 /* sign extend semid, semnum */
92 return compat_sys_semctl((int)first, (int)second, third,
93 compat_ptr(ptr));
94
95 case MSGSND:
96 /* sign extend msqid */
97 return compat_sys_msgsnd((int)first, (int)second, third,
98 compat_ptr(ptr));
99 case MSGRCV:
100 /* sign extend msqid, msgtyp */
101 return compat_sys_msgrcv((int)first, second, (int)fifth,
102 third, version, compat_ptr(ptr));
103 case MSGGET:
104 /* sign extend key */
105 return sys_msgget((int)first, second);
106 case MSGCTL:
107 /* sign extend msqid */
108 return compat_sys_msgctl((int)first, second, compat_ptr(ptr));
109
110 case SHMAT:
111 /* sign extend shmid */
112 return compat_sys_shmat((int)first, second, third, version,
113 compat_ptr(ptr));
114 case SHMDT:
115 return sys_shmdt(compat_ptr(ptr));
116 case SHMGET:
117 /* sign extend key_t */
118 return sys_shmget((int)first, second, third);
119 case SHMCTL:
120 /* sign extend shmid */
121 return compat_sys_shmctl((int)first, second, compat_ptr(ptr));
122
123 default:
124 return -ENOSYS;
125 }
126
127 return -ENOSYS;
128}
129#endif
130
131/* Note: it is necessary to treat out_fd and in_fd as unsigned ints,
132 * with the corresponding cast to a signed int to insure that the
133 * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
134 * and the register representation of a signed int (msr in 64-bit mode) is performed.
135 */
136asmlinkage long compat_sys_sendfile_wrapper(u32 out_fd, u32 in_fd,
137 compat_off_t __user *offset, u32 count)
138{
139 return compat_sys_sendfile((int)out_fd, (int)in_fd, offset, count);
140}
141
142asmlinkage long compat_sys_sendfile64_wrapper(u32 out_fd, u32 in_fd,
143 compat_loff_t __user *offset, u32 count)
144{
145 return sys_sendfile((int)out_fd, (int)in_fd,
146 (off_t __user *)offset, count);
147}
148
149unsigned long compat_sys_mmap2(unsigned long addr, size_t len, 64unsigned long compat_sys_mmap2(unsigned long addr, size_t len,
150 unsigned long prot, unsigned long flags, 65 unsigned long prot, unsigned long flags,
151 unsigned long fd, unsigned long pgoff) 66 unsigned long fd, unsigned long pgoff)
@@ -195,13 +110,6 @@ asmlinkage int compat_sys_ftruncate64(unsigned int fd, u32 reg4, unsigned long h
195 return sys_ftruncate(fd, (high << 32) | low); 110 return sys_ftruncate(fd, (high << 32) | low);
196} 111}
197 112
198long ppc32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
199 size_t len)
200{
201 return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low,
202 buf, len);
203}
204
205long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low, 113long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low,
206 size_t len, int advice) 114 size_t len, int advice)
207{ 115{
@@ -209,23 +117,6 @@ long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low,
209 advice); 117 advice);
210} 118}
211 119
212asmlinkage long compat_sys_add_key(const char __user *_type,
213 const char __user *_description,
214 const void __user *_payload,
215 u32 plen,
216 u32 ringid)
217{
218 return sys_add_key(_type, _description, _payload, plen, ringid);
219}
220
221asmlinkage long compat_sys_request_key(const char __user *_type,
222 const char __user *_description,
223 const char __user *_callout_info,
224 u32 destringid)
225{
226 return sys_request_key(_type, _description, _callout_info, destringid);
227}
228
229asmlinkage long compat_sys_sync_file_range2(int fd, unsigned int flags, 120asmlinkage long compat_sys_sync_file_range2(int fd, unsigned int flags,
230 unsigned offset_hi, unsigned offset_lo, 121 unsigned offset_hi, unsigned offset_lo,
231 unsigned nbytes_hi, unsigned nbytes_lo) 122 unsigned nbytes_hi, unsigned nbytes_lo)
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index ce640aff61a1..2c9789da0e24 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -132,7 +132,6 @@ config S390
132 select HAVE_PERF_EVENTS 132 select HAVE_PERF_EVENTS
133 select HAVE_REGS_AND_STACK_ACCESS_API 133 select HAVE_REGS_AND_STACK_ACCESS_API
134 select HAVE_SYSCALL_TRACEPOINTS 134 select HAVE_SYSCALL_TRACEPOINTS
135 select HAVE_SYSCALL_WRAPPERS
136 select HAVE_UID16 if 32BIT 135 select HAVE_UID16 if 32BIT
137 select HAVE_VIRT_CPU_ACCOUNTING 136 select HAVE_VIRT_CPU_ACCOUNTING
138 select VIRT_TO_BUS 137 select VIRT_TO_BUS
diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h
index a6667a952969..651886353551 100644
--- a/arch/s390/include/asm/unistd.h
+++ b/arch/s390/include/asm/unistd.h
@@ -54,12 +54,4 @@
54#define __ARCH_WANT_SYS_VFORK 54#define __ARCH_WANT_SYS_VFORK
55#define __ARCH_WANT_SYS_CLONE 55#define __ARCH_WANT_SYS_CLONE
56 56
57/*
58 * "Conditional" syscalls
59 *
60 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
61 * but it doesn't work on all toolchains, so we just do it by hand
62 */
63#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
64
65#endif /* _ASM_S390_UNISTD_H_ */ 57#endif /* _ASM_S390_UNISTD_H_ */
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 19f26de27fae..8b6e4f5288a2 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -288,51 +288,13 @@ asmlinkage long sys32_getegid16(void)
288 return high2lowgid(from_kgid_munged(current_user_ns(), current_egid())); 288 return high2lowgid(from_kgid_munged(current_user_ns(), current_egid()));
289} 289}
290 290
291/*
292 * sys32_ipc() is the de-multiplexer for the SysV IPC calls in 32bit emulation.
293 *
294 * This is really horribly ugly.
295 */
296#ifdef CONFIG_SYSVIPC 291#ifdef CONFIG_SYSVIPC
297asmlinkage long sys32_ipc(u32 call, int first, int second, int third, u32 ptr) 292COMPAT_SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second,
293 unsigned long, third, compat_uptr_t, ptr)
298{ 294{
299 if (call >> 16) /* hack for backward compatibility */ 295 if (call >> 16) /* hack for backward compatibility */
300 return -EINVAL; 296 return -EINVAL;
301 switch (call) { 297 return compat_sys_ipc(call, first, second, third, ptr, third);
302 case SEMTIMEDOP:
303 return compat_sys_semtimedop(first, compat_ptr(ptr),
304 second, compat_ptr(third));
305 case SEMOP:
306 /* struct sembuf is the same on 32 and 64bit :)) */
307 return sys_semtimedop(first, compat_ptr(ptr),
308 second, NULL);
309 case SEMGET:
310 return sys_semget(first, second, third);
311 case SEMCTL:
312 return compat_sys_semctl(first, second, third,
313 compat_ptr(ptr));
314 case MSGSND:
315 return compat_sys_msgsnd(first, second, third,
316 compat_ptr(ptr));
317 case MSGRCV:
318 return compat_sys_msgrcv(first, second, 0, third,
319 0, compat_ptr(ptr));
320 case MSGGET:
321 return sys_msgget((key_t) first, second);
322 case MSGCTL:
323 return compat_sys_msgctl(first, second, compat_ptr(ptr));
324 case SHMAT:
325 return compat_sys_shmat(first, second, third,
326 0, compat_ptr(ptr));
327 case SHMDT:
328 return sys_shmdt(compat_ptr(ptr));
329 case SHMGET:
330 return sys_shmget(first, (unsigned)second, third);
331 case SHMCTL:
332 return compat_sys_shmctl(first, second, compat_ptr(ptr));
333 }
334
335 return -ENOSYS;
336} 298}
337#endif 299#endif
338 300
@@ -373,48 +335,6 @@ asmlinkage compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 coun
373 return sys_readahead(fd, ((loff_t)AA(offhi) << 32) | AA(offlo), count); 335 return sys_readahead(fd, ((loff_t)AA(offhi) << 32) | AA(offlo), count);
374} 336}
375 337
376asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset, size_t count)
377{
378 mm_segment_t old_fs = get_fs();
379 int ret;
380 off_t of;
381
382 if (offset && get_user(of, offset))
383 return -EFAULT;
384
385 set_fs(KERNEL_DS);
386 ret = sys_sendfile(out_fd, in_fd,
387 offset ? (off_t __force __user *) &of : NULL, count);
388 set_fs(old_fs);
389
390 if (offset && put_user(of, offset))
391 return -EFAULT;
392
393 return ret;
394}
395
396asmlinkage long sys32_sendfile64(int out_fd, int in_fd,
397 compat_loff_t __user *offset, s32 count)
398{
399 mm_segment_t old_fs = get_fs();
400 int ret;
401 loff_t lof;
402
403 if (offset && get_user(lof, offset))
404 return -EFAULT;
405
406 set_fs(KERNEL_DS);
407 ret = sys_sendfile64(out_fd, in_fd,
408 offset ? (loff_t __force __user *) &lof : NULL,
409 count);
410 set_fs(old_fs);
411
412 if (offset && put_user(lof, offset))
413 return -EFAULT;
414
415 return ret;
416}
417
418struct stat64_emu31 { 338struct stat64_emu31 {
419 unsigned long long st_dev; 339 unsigned long long st_dev;
420 unsigned int __pad1; 340 unsigned int __pad1;
diff --git a/arch/s390/kernel/compat_linux.h b/arch/s390/kernel/compat_linux.h
index 00d92a5a6f6c..976518c0592a 100644
--- a/arch/s390/kernel/compat_linux.h
+++ b/arch/s390/kernel/compat_linux.h
@@ -94,7 +94,6 @@ long sys32_getuid16(void);
94long sys32_geteuid16(void); 94long sys32_geteuid16(void);
95long sys32_getgid16(void); 95long sys32_getgid16(void);
96long sys32_getegid16(void); 96long sys32_getegid16(void);
97long sys32_ipc(u32 call, int first, int second, int third, u32 ptr);
98long sys32_truncate64(const char __user * path, unsigned long high, 97long sys32_truncate64(const char __user * path, unsigned long high,
99 unsigned long low); 98 unsigned long low);
100long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low); 99long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned long low);
@@ -106,10 +105,6 @@ long sys32_pread64(unsigned int fd, char __user *ubuf, size_t count,
106long sys32_pwrite64(unsigned int fd, const char __user *ubuf, 105long sys32_pwrite64(unsigned int fd, const char __user *ubuf,
107 size_t count, u32 poshi, u32 poslo); 106 size_t count, u32 poshi, u32 poslo);
108compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 count); 107compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 count);
109long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
110 size_t count);
111long sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *offset,
112 s32 count);
113long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf); 108long sys32_stat64(const char __user * filename, struct stat64_emu31 __user * statbuf);
114long sys32_lstat64(const char __user * filename, 109long sys32_lstat64(const char __user * filename,
115 struct stat64_emu31 __user * statbuf); 110 struct stat64_emu31 __user * statbuf);
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 3c98c4dc5aca..17644c8e10e1 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -258,11 +258,6 @@ ENTRY(sys32_mmap2_wrapper)
258 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 * 258 llgtr %r2,%r2 # struct mmap_arg_struct_emu31 *
259 jg sys32_mmap2 # branch to system call 259 jg sys32_mmap2 # branch to system call
260 260
261ENTRY(compat_sys_getrusage_wrapper)
262 lgfr %r2,%r2 # int
263 llgtr %r3,%r3 # struct rusage_emu31 *
264 jg compat_sys_getrusage # branch to system call
265
266ENTRY(compat_sys_gettimeofday_wrapper) 261ENTRY(compat_sys_gettimeofday_wrapper)
267 llgtr %r2,%r2 # struct timeval_emu31 * 262 llgtr %r2,%r2 # struct timeval_emu31 *
268 llgtr %r3,%r3 # struct timezone * 263 llgtr %r3,%r3 # struct timezone *
@@ -393,14 +388,6 @@ ENTRY(compat_sys_sysinfo_wrapper)
393 llgtr %r2,%r2 # struct sysinfo_emu31 * 388 llgtr %r2,%r2 # struct sysinfo_emu31 *
394 jg compat_sys_sysinfo # branch to system call 389 jg compat_sys_sysinfo # branch to system call
395 390
396ENTRY(sys32_ipc_wrapper)
397 llgfr %r2,%r2 # uint
398 lgfr %r3,%r3 # int
399 lgfr %r4,%r4 # int
400 lgfr %r5,%r5 # int
401 llgfr %r6,%r6 # u32
402 jg sys32_ipc # branch to system call
403
404ENTRY(sys32_fsync_wrapper) 391ENTRY(sys32_fsync_wrapper)
405 llgfr %r2,%r2 # unsigned int 392 llgfr %r2,%r2 # unsigned int
406 jg sys_fsync # branch to system call 393 jg sys_fsync # branch to system call
@@ -666,13 +653,6 @@ ENTRY(sys32_capset_wrapper)
666 llgtr %r3,%r3 # const cap_user_data_t 653 llgtr %r3,%r3 # const cap_user_data_t
667 jg sys_capset # branch to system call 654 jg sys_capset # branch to system call
668 655
669ENTRY(sys32_sendfile_wrapper)
670 lgfr %r2,%r2 # int
671 lgfr %r3,%r3 # int
672 llgtr %r4,%r4 # __kernel_off_emu31_t *
673 llgfr %r5,%r5 # size_t
674 jg sys32_sendfile # branch to system call
675
676#sys32_vfork_wrapper # done in vfork_glue 656#sys32_vfork_wrapper # done in vfork_glue
677 657
678ENTRY(sys32_truncate64_wrapper) 658ENTRY(sys32_truncate64_wrapper)
@@ -938,13 +918,6 @@ ENTRY(sys_epoll_wait_wrapper)
938 lgfr %r5,%r5 # int 918 lgfr %r5,%r5 # int
939 jg sys_epoll_wait # branch to system call 919 jg sys_epoll_wait # branch to system call
940 920
941ENTRY(sys32_lookup_dcookie_wrapper)
942 sllg %r2,%r2,32 # get high word of 64bit dcookie
943 or %r2,%r3 # get low word of 64bit dcookie
944 llgtr %r3,%r4 # char *
945 llgfr %r4,%r5 # size_t
946 jg sys_lookup_dcookie
947
948ENTRY(sys32_fadvise64_wrapper) 921ENTRY(sys32_fadvise64_wrapper)
949 lgfr %r2,%r2 # int 922 lgfr %r2,%r2 # int
950 sllg %r3,%r3,32 # get high word of 64bit loff_t 923 sllg %r3,%r3,32 # get high word of 64bit loff_t
@@ -1264,29 +1237,12 @@ ENTRY(sys_tee_wrapper)
1264 llgfr %r5,%r5 # unsigned int 1237 llgfr %r5,%r5 # unsigned int
1265 jg sys_tee 1238 jg sys_tee
1266 1239
1267ENTRY(compat_sys_vmsplice_wrapper)
1268 lgfr %r2,%r2 # int
1269 llgtr %r3,%r3 # compat_iovec *
1270 llgfr %r4,%r4 # unsigned int
1271 llgfr %r5,%r5 # unsigned int
1272 jg compat_sys_vmsplice
1273
1274ENTRY(sys_getcpu_wrapper) 1240ENTRY(sys_getcpu_wrapper)
1275 llgtr %r2,%r2 # unsigned * 1241 llgtr %r2,%r2 # unsigned *
1276 llgtr %r3,%r3 # unsigned * 1242 llgtr %r3,%r3 # unsigned *
1277 llgtr %r4,%r4 # struct getcpu_cache * 1243 llgtr %r4,%r4 # struct getcpu_cache *
1278 jg sys_getcpu 1244 jg sys_getcpu
1279 1245
1280ENTRY(compat_sys_epoll_pwait_wrapper)
1281 lgfr %r2,%r2 # int
1282 llgtr %r3,%r3 # struct compat_epoll_event *
1283 lgfr %r4,%r4 # int
1284 lgfr %r5,%r5 # int
1285 llgtr %r6,%r6 # compat_sigset_t *
1286 llgf %r0,164(%r15) # compat_size_t
1287 stg %r0,160(%r15)
1288 jg compat_sys_epoll_pwait
1289
1290ENTRY(compat_sys_utimes_wrapper) 1246ENTRY(compat_sys_utimes_wrapper)
1291 llgtr %r2,%r2 # char * 1247 llgtr %r2,%r2 # char *
1292 llgtr %r3,%r3 # struct compat_timeval * 1248 llgtr %r3,%r3 # struct compat_timeval *
@@ -1299,12 +1255,6 @@ ENTRY(compat_sys_utimensat_wrapper)
1299 lgfr %r5,%r5 # int 1255 lgfr %r5,%r5 # int
1300 jg compat_sys_utimensat 1256 jg compat_sys_utimensat
1301 1257
1302ENTRY(compat_sys_signalfd_wrapper)
1303 lgfr %r2,%r2 # int
1304 llgtr %r3,%r3 # compat_sigset_t *
1305 llgfr %r4,%r4 # compat_size_t
1306 jg compat_sys_signalfd
1307
1308ENTRY(sys_eventfd_wrapper) 1258ENTRY(sys_eventfd_wrapper)
1309 llgfr %r2,%r2 # unsigned int 1259 llgfr %r2,%r2 # unsigned int
1310 jg sys_eventfd 1260 jg sys_eventfd
@@ -1323,13 +1273,6 @@ ENTRY(sys_timerfd_create_wrapper)
1323 lgfr %r3,%r3 # int 1273 lgfr %r3,%r3 # int
1324 jg sys_timerfd_create 1274 jg sys_timerfd_create
1325 1275
1326ENTRY(compat_sys_signalfd4_wrapper)
1327 lgfr %r2,%r2 # int
1328 llgtr %r3,%r3 # compat_sigset_t *
1329 llgfr %r4,%r4 # compat_size_t
1330 lgfr %r5,%r5 # int
1331 jg compat_sys_signalfd4
1332
1333ENTRY(sys_eventfd2_wrapper) 1276ENTRY(sys_eventfd2_wrapper)
1334 llgfr %r2,%r2 # unsigned int 1277 llgfr %r2,%r2 # unsigned int
1335 lgfr %r3,%r3 # int 1278 lgfr %r3,%r3 # int
@@ -1361,13 +1304,6 @@ ENTRY(sys32_readahead_wrapper)
1361 lgfr %r5,%r5 # s32 1304 lgfr %r5,%r5 # s32
1362 jg sys32_readahead # branch to system call 1305 jg sys32_readahead # branch to system call
1363 1306
1364ENTRY(sys32_sendfile64_wrapper)
1365 lgfr %r2,%r2 # int
1366 lgfr %r3,%r3 # int
1367 llgtr %r4,%r4 # compat_loff_t *
1368 lgfr %r5,%r5 # s32
1369 jg sys32_sendfile64 # branch to system call
1370
1371ENTRY(sys_tkill_wrapper) 1307ENTRY(sys_tkill_wrapper)
1372 lgfr %r2,%r2 # pid_t 1308 lgfr %r2,%r2 # pid_t
1373 lgfr %r3,%r3 # int 1309 lgfr %r3,%r3 # int
diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c
index d0964d22adb5..23eb222c1658 100644
--- a/arch/s390/kernel/sys_s390.c
+++ b/arch/s390/kernel/sys_s390.c
@@ -132,19 +132,9 @@ SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args)
132 * to 132 * to
133 * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len 133 * %r2: fd, %r3: mode, %r4/%r5: offset, 96(%r15)-103(%r15): len
134 */ 134 */
135SYSCALL_DEFINE(s390_fallocate)(int fd, int mode, loff_t offset, 135SYSCALL_DEFINE5(s390_fallocate, int, fd, int, mode, loff_t, offset,
136 u32 len_high, u32 len_low) 136 u32, len_high, u32, len_low)
137{ 137{
138 return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low); 138 return sys_fallocate(fd, mode, offset, ((u64)len_high << 32) | len_low);
139} 139}
140#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
141asmlinkage long SyS_s390_fallocate(long fd, long mode, loff_t offset,
142 long len_high, long len_low)
143{
144 return SYSC_s390_fallocate((int) fd, (int) mode, offset,
145 (u32) len_high, (u32) len_low);
146}
147SYSCALL_ALIAS(sys_s390_fallocate, SyS_s390_fallocate);
148#endif
149
150#endif 140#endif
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 630b935d1284..d2baabed7148 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -85,7 +85,7 @@ SYSCALL(sys_sigpending,sys_sigpending,compat_sys_sigpending_wrapper)
85SYSCALL(sys_sethostname,sys_sethostname,sys32_sethostname_wrapper) 85SYSCALL(sys_sethostname,sys_sethostname,sys32_sethostname_wrapper)
86SYSCALL(sys_setrlimit,sys_setrlimit,compat_sys_setrlimit_wrapper) /* 75 */ 86SYSCALL(sys_setrlimit,sys_setrlimit,compat_sys_setrlimit_wrapper) /* 75 */
87SYSCALL(sys_old_getrlimit,sys_getrlimit,compat_sys_old_getrlimit_wrapper) 87SYSCALL(sys_old_getrlimit,sys_getrlimit,compat_sys_old_getrlimit_wrapper)
88SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage_wrapper) 88SYSCALL(sys_getrusage,sys_getrusage,compat_sys_getrusage)
89SYSCALL(sys_gettimeofday,sys_gettimeofday,compat_sys_gettimeofday_wrapper) 89SYSCALL(sys_gettimeofday,sys_gettimeofday,compat_sys_gettimeofday_wrapper)
90SYSCALL(sys_settimeofday,sys_settimeofday,compat_sys_settimeofday_wrapper) 90SYSCALL(sys_settimeofday,sys_settimeofday,compat_sys_settimeofday_wrapper)
91SYSCALL(sys_getgroups16,sys_ni_syscall,sys32_getgroups16_wrapper) /* 80 old getgroups16 syscall */ 91SYSCALL(sys_getgroups16,sys_ni_syscall,sys32_getgroups16_wrapper) /* 80 old getgroups16 syscall */
@@ -118,14 +118,14 @@ SYSCALL(sys_newstat,sys_newstat,compat_sys_newstat_wrapper)
118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper) 118SYSCALL(sys_newlstat,sys_newlstat,compat_sys_newlstat_wrapper)
119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper) 119SYSCALL(sys_newfstat,sys_newfstat,compat_sys_newfstat_wrapper)
120NI_SYSCALL /* old uname syscall */ 120NI_SYSCALL /* old uname syscall */
121SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,sys32_lookup_dcookie_wrapper) /* 110 */ 121SYSCALL(sys_lookup_dcookie,sys_lookup_dcookie,compat_sys_lookup_dcookie) /* 110 */
122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup) 122SYSCALL(sys_vhangup,sys_vhangup,sys_vhangup)
123NI_SYSCALL /* old "idle" system call */ 123NI_SYSCALL /* old "idle" system call */
124NI_SYSCALL /* vm86old for i386 */ 124NI_SYSCALL /* vm86old for i386 */
125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4) 125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4)
126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ 126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */
127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper) 127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
128SYSCALL(sys_s390_ipc,sys_s390_ipc,sys32_ipc_wrapper) 128SYSCALL(sys_s390_ipc,sys_s390_ipc,compat_sys_s390_ipc)
129SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper) 129SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn) 130SYSCALL(sys_sigreturn,sys_sigreturn,sys32_sigreturn)
131SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */ 131SYSCALL(sys_clone,sys_clone,sys_clone_wrapper) /* 120 */
@@ -195,7 +195,7 @@ SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper)
195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) 195SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper)
196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ 196SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */
197SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack) 197SYSCALL(sys_sigaltstack,sys_sigaltstack,compat_sys_sigaltstack)
198SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) 198SYSCALL(sys_sendfile,sys_sendfile64,compat_sys_sendfile)
199NI_SYSCALL /* streams1 */ 199NI_SYSCALL /* streams1 */
200NI_SYSCALL /* streams2 */ 200NI_SYSCALL /* streams2 */
201SYSCALL(sys_vfork,sys_vfork,sys_vfork) /* 190 */ 201SYSCALL(sys_vfork,sys_vfork,sys_vfork) /* 190 */
@@ -231,7 +231,7 @@ SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper)
231SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ 231SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */
232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) 232SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper)
233SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper) 233SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper)
234SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64_wrapper) 234SYSCALL(sys_sendfile64,sys_ni_syscall,compat_sys_sendfile64)
235SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) 235SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper)
236SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ 236SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */
237SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) 237SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper)
@@ -317,20 +317,20 @@ SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list)
317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) 317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper)
318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) 318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper)
319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) 319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper)
320SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice_wrapper) 320SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice)
321NI_SYSCALL /* 310 sys_move_pages */ 321NI_SYSCALL /* 310 sys_move_pages */
322SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper) 322SYSCALL(sys_getcpu,sys_getcpu,sys_getcpu_wrapper)
323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait_wrapper) 323SYSCALL(sys_epoll_pwait,sys_epoll_pwait,compat_sys_epoll_pwait)
324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper) 324SYSCALL(sys_utimes,sys_utimes,compat_sys_utimes_wrapper)
325SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper) 325SYSCALL(sys_s390_fallocate,sys_fallocate,sys_fallocate_wrapper)
326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */ 326SYSCALL(sys_utimensat,sys_utimensat,compat_sys_utimensat_wrapper) /* 315 */
327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd_wrapper) 327SYSCALL(sys_signalfd,sys_signalfd,compat_sys_signalfd)
328NI_SYSCALL /* 317 old sys_timer_fd */ 328NI_SYSCALL /* 317 old sys_timer_fd */
329SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper) 329SYSCALL(sys_eventfd,sys_eventfd,sys_eventfd_wrapper)
330SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper) 330SYSCALL(sys_timerfd_create,sys_timerfd_create,sys_timerfd_create_wrapper)
331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */ 331SYSCALL(sys_timerfd_settime,sys_timerfd_settime,compat_sys_timerfd_settime) /* 320 */
332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime) 332SYSCALL(sys_timerfd_gettime,sys_timerfd_gettime,compat_sys_timerfd_gettime)
333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4_wrapper) 333SYSCALL(sys_signalfd4,sys_signalfd4,compat_sys_signalfd4)
334SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper) 334SYSCALL(sys_eventfd2,sys_eventfd2,sys_eventfd2_wrapper)
335SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper) 335SYSCALL(sys_inotify_init1,sys_inotify_init1,sys_inotify_init1_wrapper)
336SYSCALL(sys_pipe2,sys_pipe2,sys_pipe2_wrapper) /* 325 */ 336SYSCALL(sys_pipe2,sys_pipe2,sys_pipe2_wrapper) /* 325 */
diff --git a/arch/sh/include/asm/unistd.h b/arch/sh/include/asm/unistd.h
index 5e90fa2b7eed..e77816c4b9bc 100644
--- a/arch/sh/include/asm/unistd.h
+++ b/arch/sh/include/asm/unistd.h
@@ -30,12 +30,4 @@
30# define __ARCH_WANT_SYS_VFORK 30# define __ARCH_WANT_SYS_VFORK
31# define __ARCH_WANT_SYS_CLONE 31# define __ARCH_WANT_SYS_CLONE
32 32
33/*
34 * "Conditional" syscalls
35 *
36 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
37 * but it doesn't work on all toolchains, so we just do it by hand
38 */
39# define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
40
41#include <uapi/asm/unistd.h> 33#include <uapi/asm/unistd.h>
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index e5641157464f..f5041d741dea 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -62,7 +62,6 @@ config SPARC64
62 select HAVE_RCU_TABLE_FREE if SMP 62 select HAVE_RCU_TABLE_FREE if SMP
63 select HAVE_MEMBLOCK 63 select HAVE_MEMBLOCK
64 select HAVE_MEMBLOCK_NODE_MAP 64 select HAVE_MEMBLOCK_NODE_MAP
65 select HAVE_SYSCALL_WRAPPERS
66 select HAVE_ARCH_TRANSPARENT_HUGEPAGE 65 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
67 select HAVE_DYNAMIC_FTRACE 66 select HAVE_DYNAMIC_FTRACE
68 select HAVE_FTRACE_MCOUNT_RECORD 67 select HAVE_FTRACE_MCOUNT_RECORD
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h
index 5356810bd7e7..dfa53fdd5cbc 100644
--- a/arch/sparc/include/asm/unistd.h
+++ b/arch/sparc/include/asm/unistd.h
@@ -45,12 +45,4 @@
45#define __ARCH_WANT_COMPAT_SYS_SENDFILE 45#define __ARCH_WANT_COMPAT_SYS_SENDFILE
46#endif 46#endif
47 47
48/*
49 * "Conditional" syscalls
50 *
51 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
52 * but it doesn't work on all toolchains, so we just do it by hand
53 */
54#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
55
56#endif /* _SPARC_UNISTD_H */ 48#endif /* _SPARC_UNISTD_H */
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S
index 240a3cecc11e..2e680b5245c9 100644
--- a/arch/sparc/kernel/sys32.S
+++ b/arch/sparc/kernel/sys32.S
@@ -36,7 +36,6 @@ STUB: sra REG1, 0, REG1; \
36 jmpl %g1 + %lo(SYSCALL), %g0; \ 36 jmpl %g1 + %lo(SYSCALL), %g0; \
37 sra REG3, 0, REG3 37 sra REG3, 0, REG3
38 38
39SIGN1(sys32_getrusage, compat_sys_getrusage, %o0)
40SIGN1(sys32_readahead, compat_sys_readahead, %o0) 39SIGN1(sys32_readahead, compat_sys_readahead, %o0)
41SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4) 40SIGN2(sys32_fadvise64, compat_sys_fadvise64, %o0, %o4)
42SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5) 41SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
@@ -46,12 +45,9 @@ SIGN1(sys32_io_submit, compat_sys_io_submit, %o1)
46SIGN1(sys32_mq_open, compat_sys_mq_open, %o1) 45SIGN1(sys32_mq_open, compat_sys_mq_open, %o1)
47SIGN1(sys32_select, compat_sys_select, %o0) 46SIGN1(sys32_select, compat_sys_select, %o0)
48SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5) 47SIGN3(sys32_futex, compat_sys_futex, %o1, %o2, %o5)
49SIGN2(sys32_sendfile, compat_sys_sendfile, %o0, %o1)
50SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0) 48SIGN1(sys32_recvfrom, compat_sys_recvfrom, %o0)
51SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0) 49SIGN1(sys32_recvmsg, compat_sys_recvmsg, %o0)
52SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0) 50SIGN1(sys32_sendmsg, compat_sys_sendmsg, %o0)
53SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5)
54SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0)
55 51
56 .globl sys32_mmap2 52 .globl sys32_mmap2
57sys32_mmap2: 53sys32_mmap2:
diff --git a/arch/sparc/kernel/sys_sparc32.c b/arch/sparc/kernel/sys_sparc32.c
index f38f2280fade..3d0ddbc005fe 100644
--- a/arch/sparc/kernel/sys_sparc32.c
+++ b/arch/sparc/kernel/sys_sparc32.c
@@ -49,71 +49,6 @@
49#include <asm/mmu_context.h> 49#include <asm/mmu_context.h>
50#include <asm/compat_signal.h> 50#include <asm/compat_signal.h>
51 51
52#ifdef CONFIG_SYSVIPC
53asmlinkage long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr, u32 fifth)
54{
55 int version;
56
57 version = call >> 16; /* hack for backward compatibility */
58 call &= 0xffff;
59
60 switch (call) {
61 case SEMTIMEDOP:
62 if (fifth)
63 /* sign extend semid */
64 return compat_sys_semtimedop((int)first,
65 compat_ptr(ptr), second,
66 compat_ptr(fifth));
67 /* else fall through for normal semop() */
68 case SEMOP:
69 /* struct sembuf is the same on 32 and 64bit :)) */
70 /* sign extend semid */
71 return sys_semtimedop((int)first, compat_ptr(ptr), second,
72 NULL);
73 case SEMGET:
74 /* sign extend key, nsems */
75 return sys_semget((int)first, (int)second, third);
76 case SEMCTL:
77 /* sign extend semid, semnum */
78 return compat_sys_semctl((int)first, (int)second, third,
79 compat_ptr(ptr));
80
81 case MSGSND:
82 /* sign extend msqid */
83 return compat_sys_msgsnd((int)first, (int)second, third,
84 compat_ptr(ptr));
85 case MSGRCV:
86 /* sign extend msqid, msgtyp */
87 return compat_sys_msgrcv((int)first, second, (int)fifth,
88 third, version, compat_ptr(ptr));
89 case MSGGET:
90 /* sign extend key */
91 return sys_msgget((int)first, second);
92 case MSGCTL:
93 /* sign extend msqid */
94 return compat_sys_msgctl((int)first, second, compat_ptr(ptr));
95
96 case SHMAT:
97 /* sign extend shmid */
98 return compat_sys_shmat((int)first, second, third, version,
99 compat_ptr(ptr));
100 case SHMDT:
101 return sys_shmdt(compat_ptr(ptr));
102 case SHMGET:
103 /* sign extend key_t */
104 return sys_shmget((int)first, second, third);
105 case SHMCTL:
106 /* sign extend shmid */
107 return compat_sys_shmctl((int)first, second, compat_ptr(ptr));
108
109 default:
110 return -ENOSYS;
111 }
112
113 return -ENOSYS;
114}
115#endif
116
117asmlinkage long sys32_truncate64(const char __user * path, unsigned long high, unsigned long low) 52asmlinkage long sys32_truncate64(const char __user * path, unsigned long high, unsigned long low)
118{ 53{
119 if ((int)high < 0) 54 if ((int)high < 0)
@@ -303,15 +238,7 @@ long compat_sys_fadvise64_64(int fd,
303 advice); 238 advice);
304} 239}
305 240
306long sys32_lookup_dcookie(unsigned long cookie_high, 241long sys32_sync_file_range(unsigned int fd, unsigned long off_high, unsigned long off_low, unsigned long nb_high, unsigned long nb_low, unsigned int flags)
307 unsigned long cookie_low,
308 char __user *buf, size_t len)
309{
310 return sys_lookup_dcookie((cookie_high << 32) | cookie_low,
311 buf, len);
312}
313
314long compat_sync_file_range(int fd, unsigned long off_high, unsigned long off_low, unsigned long nb_high, unsigned long nb_low, int flags)
315{ 242{
316 return sys_sync_file_range(fd, 243 return sys_sync_file_range(fd,
317 (off_high << 32) | off_low, 244 (off_high << 32) | off_low,
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index 708bc29d36a8..2daaaa6eda23 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -353,7 +353,7 @@ SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second
353 case SEMCTL: { 353 case SEMCTL: {
354 err = sys_semctl(first, second, 354 err = sys_semctl(first, second,
355 (int)third | IPC_64, 355 (int)third | IPC_64,
356 (union semun) ptr); 356 (unsigned long) ptr);
357 goto out; 357 goto out;
358 } 358 }
359 default: 359 default:
@@ -470,10 +470,6 @@ SYSCALL_DEFINE2(64_munmap, unsigned long, addr, size_t, len)
470 470
471 return vm_munmap(addr, len); 471 return vm_munmap(addr, len);
472} 472}
473
474extern unsigned long do_mremap(unsigned long addr,
475 unsigned long old_len, unsigned long new_len,
476 unsigned long flags, unsigned long new_addr);
477 473
478SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len, 474SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len,
479 unsigned long, new_len, unsigned long, flags, 475 unsigned long, new_len, unsigned long, flags,
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S
index 088134834dab..8fd932080215 100644
--- a/arch/sparc/kernel/systbls_64.S
+++ b/arch/sparc/kernel/systbls_64.S
@@ -23,9 +23,9 @@ sys_call_table32:
23/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod 23/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
24/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, compat_sys_lseek 24/*15*/ .word sys_chmod, sys_lchown16, sys_brk, sys_nis_syscall, compat_sys_lseek
25/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 25/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
26/*25*/ .word sys32_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause 26/*25*/ .word compat_sys_vmsplice, compat_sys_ptrace, sys_alarm, compat_sys_sigaltstack, sys_pause
27/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice 27/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
28 .word sys_chown, sys_sync, sys_kill, compat_sys_newstat, sys32_sendfile 28 .word sys_chown, sys_sync, sys_kill, compat_sys_newstat, compat_sys_sendfile
29/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid 29/*40*/ .word compat_sys_newlstat, sys_dup, sys_sparc_pipe, compat_sys_times, sys_getuid
30 .word sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16 30 .word sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
31/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl 31/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
@@ -41,7 +41,7 @@ sys_call_table32:
41/*100*/ .word sys_getpriority, sys32_rt_sigreturn, compat_sys_rt_sigaction, compat_sys_rt_sigprocmask, compat_sys_rt_sigpending 41/*100*/ .word sys_getpriority, sys32_rt_sigreturn, compat_sys_rt_sigaction, compat_sys_rt_sigprocmask, compat_sys_rt_sigpending
42 .word compat_sys_rt_sigtimedwait, compat_sys_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid 42 .word compat_sys_rt_sigtimedwait, compat_sys_rt_sigqueueinfo, compat_sys_rt_sigsuspend, sys_setresuid, sys_getresuid
43/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall 43/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall
44 .word sys_getgroups, compat_sys_gettimeofday, sys32_getrusage, sys_nis_syscall, sys_getcwd 44 .word sys_getgroups, compat_sys_gettimeofday, compat_sys_getrusage, sys_nis_syscall, sys_getcwd
45/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod 45/*120*/ .word compat_sys_readv, compat_sys_writev, compat_sys_settimeofday, sys_fchown16, sys_fchmod
46 .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, compat_sys_truncate 46 .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, compat_sys_truncate
47/*130*/ .word compat_sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall 47/*130*/ .word compat_sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall
@@ -59,7 +59,7 @@ sys_call_table32:
59/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl 59/*190*/ .word sys_init_module, sys_sparc64_personality, sys_remap_file_pages, sys_epoll_create, sys_epoll_ctl
60 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask 60 .word sys_epoll_wait, sys_ioprio_set, sys_getppid, compat_sys_sparc_sigaction, sys_sgetmask
61/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 61/*200*/ .word sys_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
62 .word sys32_readahead, sys32_socketcall, sys_syslog, sys32_lookup_dcookie, sys32_fadvise64 62 .word sys32_readahead, sys32_socketcall, sys_syslog, compat_sys_lookup_dcookie, sys32_fadvise64
63/*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo 63/*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, compat_sys_sysinfo
64 .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex 64 .word compat_sys_ipc, sys32_sigreturn, sys_clone, sys_ioprio_get, compat_sys_adjtimex
65/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid 65/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys_delete_module, sys_ni_syscall, sys_getpgid
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 0f712f4e1b33..0e5343902363 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -16,7 +16,6 @@ config TILE
16 select GENERIC_PENDING_IRQ if SMP 16 select GENERIC_PENDING_IRQ if SMP
17 select GENERIC_IRQ_SHOW 17 select GENERIC_IRQ_SHOW
18 select HAVE_DEBUG_BUGVERBOSE 18 select HAVE_DEBUG_BUGVERBOSE
19 select HAVE_SYSCALL_WRAPPERS if TILEGX
20 select VIRT_TO_BUS 19 select VIRT_TO_BUS
21 select SYS_HYPERVISOR 20 select SYS_HYPERVISOR
22 select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS 21 select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS
diff --git a/arch/tile/kernel/compat.c b/arch/tile/kernel/compat.c
index 6ea4cdb3c6a0..ed378416b86a 100644
--- a/arch/tile/kernel/compat.c
+++ b/arch/tile/kernel/compat.c
@@ -56,12 +56,6 @@ COMPAT_SYSCALL_DEFINE6(pwrite64, unsigned int, fd, char __user *, ubuf,
56 return sys_pwrite64(fd, ubuf, count, ((loff_t)high << 32) | low); 56 return sys_pwrite64(fd, ubuf, count, ((loff_t)high << 32) | low);
57} 57}
58 58
59COMPAT_SYSCALL_DEFINE4(lookup_dcookie, u32, low, u32, high,
60 char __user *, buf, size_t, len)
61{
62 return sys_lookup_dcookie(((loff_t)high << 32) | low, buf, len);
63}
64
65COMPAT_SYSCALL_DEFINE6(sync_file_range2, int, fd, unsigned int, flags, 59COMPAT_SYSCALL_DEFINE6(sync_file_range2, int, fd, unsigned int, flags,
66 u32, offset_lo, u32, offset_hi, 60 u32, offset_lo, u32, offset_hi,
67 u32, nbytes_lo, u32, nbytes_hi) 61 u32, nbytes_lo, u32, nbytes_hi)
diff --git a/arch/x86/ia32/Makefile b/arch/x86/ia32/Makefile
index 455646e0e532..e785b422b766 100644
--- a/arch/x86/ia32/Makefile
+++ b/arch/x86/ia32/Makefile
@@ -5,9 +5,6 @@
5obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o 5obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o
6obj-$(CONFIG_IA32_EMULATION) += nosyscall.o syscall_ia32.o 6obj-$(CONFIG_IA32_EMULATION) += nosyscall.o syscall_ia32.o
7 7
8sysv-$(CONFIG_SYSVIPC) := ipc32.o
9obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
10
11obj-$(CONFIG_IA32_AOUT) += ia32_aout.o 8obj-$(CONFIG_IA32_AOUT) += ia32_aout.o
12 9
13audit-class-$(CONFIG_AUDIT) := audit.o 10audit-class-$(CONFIG_AUDIT) := audit.o
diff --git a/arch/x86/ia32/ipc32.c b/arch/x86/ia32/ipc32.c
deleted file mode 100644
index 29cdcd02ead3..000000000000
--- a/arch/x86/ia32/ipc32.c
+++ /dev/null
@@ -1,54 +0,0 @@
1#include <linux/kernel.h>
2#include <linux/spinlock.h>
3#include <linux/list.h>
4#include <linux/syscalls.h>
5#include <linux/time.h>
6#include <linux/sem.h>
7#include <linux/msg.h>
8#include <linux/shm.h>
9#include <linux/ipc.h>
10#include <linux/compat.h>
11#include <asm/sys_ia32.h>
12
13asmlinkage long sys32_ipc(u32 call, int first, int second, int third,
14 compat_uptr_t ptr, u32 fifth)
15{
16 int version;
17
18 version = call >> 16; /* hack for backward compatibility */
19 call &= 0xffff;
20
21 switch (call) {
22 case SEMOP:
23 /* struct sembuf is the same on 32 and 64bit :)) */
24 return sys_semtimedop(first, compat_ptr(ptr), second, NULL);
25 case SEMTIMEDOP:
26 return compat_sys_semtimedop(first, compat_ptr(ptr), second,
27 compat_ptr(fifth));
28 case SEMGET:
29 return sys_semget(first, second, third);
30 case SEMCTL:
31 return compat_sys_semctl(first, second, third, compat_ptr(ptr));
32
33 case MSGSND:
34 return compat_sys_msgsnd(first, second, third, compat_ptr(ptr));
35 case MSGRCV:
36 return compat_sys_msgrcv(first, second, fifth, third,
37 version, compat_ptr(ptr));
38 case MSGGET:
39 return sys_msgget((key_t) first, second);
40 case MSGCTL:
41 return compat_sys_msgctl(first, second, compat_ptr(ptr));
42
43 case SHMAT:
44 return compat_sys_shmat(first, second, third, version,
45 compat_ptr(ptr));
46 case SHMDT:
47 return sys_shmdt(compat_ptr(ptr));
48 case SHMGET:
49 return sys_shmget(first, (unsigned)second, third);
50 case SHMCTL:
51 return compat_sys_shmctl(first, second, compat_ptr(ptr));
52 }
53 return -ENOSYS;
54}
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index ad7a20cbc699..4e4907c67d92 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -166,12 +166,6 @@ asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *arg)
166 a.offset>>PAGE_SHIFT); 166 a.offset>>PAGE_SHIFT);
167} 167}
168 168
169asmlinkage long sys32_mprotect(unsigned long start, size_t len,
170 unsigned long prot)
171{
172 return sys_mprotect(start, len, prot);
173}
174
175asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int __user *stat_addr, 169asmlinkage long sys32_waitpid(compat_pid_t pid, unsigned int __user *stat_addr,
176 int options) 170 int options)
177{ 171{
@@ -194,35 +188,10 @@ asmlinkage long sys32_pwrite(unsigned int fd, const char __user *ubuf,
194} 188}
195 189
196 190
197asmlinkage long sys32_sendfile(int out_fd, int in_fd,
198 compat_off_t __user *offset, s32 count)
199{
200 mm_segment_t old_fs = get_fs();
201 int ret;
202 off_t of;
203
204 if (offset && get_user(of, offset))
205 return -EFAULT;
206
207 set_fs(KERNEL_DS);
208 ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL,
209 count);
210 set_fs(old_fs);
211
212 if (offset && put_user(of, offset))
213 return -EFAULT;
214 return ret;
215}
216
217/* 191/*
218 * Some system calls that need sign extended arguments. This could be 192 * Some system calls that need sign extended arguments. This could be
219 * done by a generic wrapper. 193 * done by a generic wrapper.
220 */ 194 */
221long sys32_kill(int pid, int sig)
222{
223 return sys_kill(pid, sig);
224}
225
226long sys32_fadvise64_64(int fd, __u32 offset_low, __u32 offset_high, 195long sys32_fadvise64_64(int fd, __u32 offset_low, __u32 offset_high,
227 __u32 len_low, __u32 len_high, int advice) 196 __u32 len_low, __u32 len_high, int advice)
228{ 197{
@@ -246,12 +215,6 @@ long sys32_vm86_warning(void)
246 return -ENOSYS; 215 return -ENOSYS;
247} 216}
248 217
249long sys32_lookup_dcookie(u32 addr_low, u32 addr_high,
250 char __user *buf, size_t len)
251{
252 return sys_lookup_dcookie(((u64)addr_high << 32) | addr_low, buf, len);
253}
254
255asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi, 218asmlinkage ssize_t sys32_readahead(int fd, unsigned off_lo, unsigned off_hi,
256 size_t count) 219 size_t count)
257{ 220{
diff --git a/arch/x86/include/asm/sys_ia32.h b/arch/x86/include/asm/sys_ia32.h
index 8459efc39686..0ef202e232d6 100644
--- a/arch/x86/include/asm/sys_ia32.h
+++ b/arch/x86/include/asm/sys_ia32.h
@@ -30,23 +30,14 @@ asmlinkage long sys32_fstatat(unsigned int, const char __user *,
30 struct stat64 __user *, int); 30 struct stat64 __user *, int);
31struct mmap_arg_struct32; 31struct mmap_arg_struct32;
32asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *); 32asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *);
33asmlinkage long sys32_mprotect(unsigned long, size_t, unsigned long);
34
35asmlinkage long sys32_alarm(unsigned int);
36 33
37asmlinkage long sys32_waitpid(compat_pid_t, unsigned int __user *, int); 34asmlinkage long sys32_waitpid(compat_pid_t, unsigned int __user *, int);
38asmlinkage long sys32_sysfs(int, u32, u32);
39 35
40asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32); 36asmlinkage long sys32_pread(unsigned int, char __user *, u32, u32, u32);
41asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32); 37asmlinkage long sys32_pwrite(unsigned int, const char __user *, u32, u32, u32);
42 38
43asmlinkage long sys32_personality(unsigned long);
44asmlinkage long sys32_sendfile(int, int, compat_off_t __user *, s32);
45
46long sys32_kill(int, int);
47long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int); 39long sys32_fadvise64_64(int, __u32, __u32, __u32, __u32, int);
48long sys32_vm86_warning(void); 40long sys32_vm86_warning(void);
49long sys32_lookup_dcookie(u32, u32, char __user *, size_t);
50 41
51asmlinkage ssize_t sys32_readahead(int, unsigned, unsigned, size_t); 42asmlinkage ssize_t sys32_readahead(int, unsigned, unsigned, size_t);
52asmlinkage long sys32_sync_file_range(int, unsigned, unsigned, 43asmlinkage long sys32_sync_file_range(int, unsigned, unsigned,
@@ -59,9 +50,6 @@ asmlinkage long sys32_fallocate(int, int, unsigned,
59asmlinkage long sys32_sigreturn(void); 50asmlinkage long sys32_sigreturn(void);
60asmlinkage long sys32_rt_sigreturn(void); 51asmlinkage long sys32_rt_sigreturn(void);
61 52
62/* ia32/ipc32.c */
63asmlinkage long sys32_ipc(u32, int, int, int, compat_uptr_t, u32);
64
65asmlinkage long sys32_fanotify_mark(int, unsigned int, u32, u32, int, 53asmlinkage long sys32_fanotify_mark(int, unsigned int, u32, u32, int,
66 const char __user *); 54 const char __user *);
67 55
diff --git a/arch/x86/include/asm/syscalls.h b/arch/x86/include/asm/syscalls.h
index 6cf0a9cc60cd..5f87b35fd2ef 100644
--- a/arch/x86/include/asm/syscalls.h
+++ b/arch/x86/include/asm/syscalls.h
@@ -27,8 +27,8 @@ asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
27long sys_rt_sigreturn(void); 27long sys_rt_sigreturn(void);
28 28
29/* kernel/tls.c */ 29/* kernel/tls.c */
30asmlinkage int sys_set_thread_area(struct user_desc __user *); 30asmlinkage long sys_set_thread_area(struct user_desc __user *);
31asmlinkage int sys_get_thread_area(struct user_desc __user *); 31asmlinkage long sys_get_thread_area(struct user_desc __user *);
32 32
33/* X86_32 only */ 33/* X86_32 only */
34#ifdef CONFIG_X86_32 34#ifdef CONFIG_X86_32
diff --git a/arch/x86/include/asm/unistd.h b/arch/x86/include/asm/unistd.h
index 3d5df1c4447f..c2a48139c340 100644
--- a/arch/x86/include/asm/unistd.h
+++ b/arch/x86/include/asm/unistd.h
@@ -50,12 +50,4 @@
50# define __ARCH_WANT_SYS_VFORK 50# define __ARCH_WANT_SYS_VFORK
51# define __ARCH_WANT_SYS_CLONE 51# define __ARCH_WANT_SYS_CLONE
52 52
53/*
54 * "Conditional" syscalls
55 *
56 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
57 * but it doesn't work on all toolchains, so we just do it by hand
58 */
59# define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
60
61#endif /* _ASM_X86_UNISTD_H */ 53#endif /* _ASM_X86_UNISTD_H */
diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
index 9d9d2f9e77a5..f7fec09e3e3a 100644
--- a/arch/x86/kernel/tls.c
+++ b/arch/x86/kernel/tls.c
@@ -3,13 +3,13 @@
3#include <linux/sched.h> 3#include <linux/sched.h>
4#include <linux/user.h> 4#include <linux/user.h>
5#include <linux/regset.h> 5#include <linux/regset.h>
6#include <linux/syscalls.h>
6 7
7#include <asm/uaccess.h> 8#include <asm/uaccess.h>
8#include <asm/desc.h> 9#include <asm/desc.h>
9#include <asm/ldt.h> 10#include <asm/ldt.h>
10#include <asm/processor.h> 11#include <asm/processor.h>
11#include <asm/proto.h> 12#include <asm/proto.h>
12#include <asm/syscalls.h>
13 13
14#include "tls.h" 14#include "tls.h"
15 15
@@ -89,11 +89,9 @@ int do_set_thread_area(struct task_struct *p, int idx,
89 return 0; 89 return 0;
90} 90}
91 91
92asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) 92SYSCALL_DEFINE1(set_thread_area, struct user_desc __user *, u_info)
93{ 93{
94 int ret = do_set_thread_area(current, -1, u_info, 1); 94 return do_set_thread_area(current, -1, u_info, 1);
95 asmlinkage_protect(1, ret, u_info);
96 return ret;
97} 95}
98 96
99 97
@@ -139,11 +137,9 @@ int do_get_thread_area(struct task_struct *p, int idx,
139 return 0; 137 return 0;
140} 138}
141 139
142asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) 140SYSCALL_DEFINE1(get_thread_area, struct user_desc __user *, u_info)
143{ 141{
144 int ret = do_get_thread_area(current, -1, u_info); 142 return do_get_thread_area(current, -1, u_info);
145 asmlinkage_protect(1, ret, u_info);
146 return ret;
147} 143}
148 144
149int regset_tls_active(struct task_struct *target, 145int regset_tls_active(struct task_struct *target,
diff --git a/arch/x86/syscalls/syscall_32.tbl b/arch/x86/syscalls/syscall_32.tbl
index e6d55f0064df..d0d59bfbccce 100644
--- a/arch/x86/syscalls/syscall_32.tbl
+++ b/arch/x86/syscalls/syscall_32.tbl
@@ -43,7 +43,7 @@
4334 i386 nice sys_nice 4334 i386 nice sys_nice
4435 i386 ftime 4435 i386 ftime
4536 i386 sync sys_sync 4536 i386 sync sys_sync
4637 i386 kill sys_kill sys32_kill 4637 i386 kill sys_kill
4738 i386 rename sys_rename 4738 i386 rename sys_rename
4839 i386 mkdir sys_mkdir 4839 i386 mkdir sys_mkdir
4940 i386 rmdir sys_rmdir 4940 i386 rmdir sys_rmdir
@@ -123,7 +123,7 @@
123114 i386 wait4 sys_wait4 compat_sys_wait4 123114 i386 wait4 sys_wait4 compat_sys_wait4
124115 i386 swapoff sys_swapoff 124115 i386 swapoff sys_swapoff
125116 i386 sysinfo sys_sysinfo compat_sys_sysinfo 125116 i386 sysinfo sys_sysinfo compat_sys_sysinfo
126117 i386 ipc sys_ipc sys32_ipc 126117 i386 ipc sys_ipc compat_sys_ipc
127118 i386 fsync sys_fsync 127118 i386 fsync sys_fsync
128119 i386 sigreturn sys_sigreturn stub32_sigreturn 128119 i386 sigreturn sys_sigreturn stub32_sigreturn
129120 i386 clone sys_clone stub32_clone 129120 i386 clone sys_clone stub32_clone
@@ -131,7 +131,7 @@
131122 i386 uname sys_newuname 131122 i386 uname sys_newuname
132123 i386 modify_ldt sys_modify_ldt 132123 i386 modify_ldt sys_modify_ldt
133124 i386 adjtimex sys_adjtimex compat_sys_adjtimex 133124 i386 adjtimex sys_adjtimex compat_sys_adjtimex
134125 i386 mprotect sys_mprotect sys32_mprotect 134125 i386 mprotect sys_mprotect
135126 i386 sigprocmask sys_sigprocmask compat_sys_sigprocmask 135126 i386 sigprocmask sys_sigprocmask compat_sys_sigprocmask
136127 i386 create_module 136127 i386 create_module
137128 i386 init_module sys_init_module 137128 i386 init_module sys_init_module
@@ -193,7 +193,7 @@
193184 i386 capget sys_capget 193184 i386 capget sys_capget
194185 i386 capset sys_capset 194185 i386 capset sys_capset
195186 i386 sigaltstack sys_sigaltstack compat_sys_sigaltstack 195186 i386 sigaltstack sys_sigaltstack compat_sys_sigaltstack
196187 i386 sendfile sys_sendfile sys32_sendfile 196187 i386 sendfile sys_sendfile compat_sys_sendfile
197188 i386 getpmsg 197188 i386 getpmsg
198189 i386 putpmsg 198189 i386 putpmsg
199190 i386 vfork sys_vfork stub32_vfork 199190 i386 vfork sys_vfork stub32_vfork
@@ -259,7 +259,7 @@
259250 i386 fadvise64 sys_fadvise64 sys32_fadvise64 259250 i386 fadvise64 sys_fadvise64 sys32_fadvise64
260# 251 is available for reuse (was briefly sys_set_zone_reclaim) 260# 251 is available for reuse (was briefly sys_set_zone_reclaim)
261252 i386 exit_group sys_exit_group 261252 i386 exit_group sys_exit_group
262253 i386 lookup_dcookie sys_lookup_dcookie sys32_lookup_dcookie 262253 i386 lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie
263254 i386 epoll_create sys_epoll_create 263254 i386 epoll_create sys_epoll_create
264255 i386 epoll_ctl sys_epoll_ctl 264255 i386 epoll_ctl sys_epoll_ctl
265256 i386 epoll_wait sys_epoll_wait 265256 i386 epoll_wait sys_epoll_wait
diff --git a/arch/x86/um/tls_32.c b/arch/x86/um/tls_32.c
index 5f5feff3d24c..80ffa5b9982d 100644
--- a/arch/x86/um/tls_32.c
+++ b/arch/x86/um/tls_32.c
@@ -5,6 +5,7 @@
5 5
6#include <linux/percpu.h> 6#include <linux/percpu.h>
7#include <linux/sched.h> 7#include <linux/sched.h>
8#include <linux/syscalls.h>
8#include <asm/uaccess.h> 9#include <asm/uaccess.h>
9#include <os.h> 10#include <os.h>
10#include <skas.h> 11#include <skas.h>
@@ -274,7 +275,7 @@ clear:
274 goto out; 275 goto out;
275} 276}
276 277
277int sys_set_thread_area(struct user_desc __user *user_desc) 278SYSCALL_DEFINE1(set_thread_area, struct user_desc __user *, user_desc)
278{ 279{
279 struct user_desc info; 280 struct user_desc info;
280 int idx, ret; 281 int idx, ret;
@@ -322,7 +323,7 @@ int ptrace_set_thread_area(struct task_struct *child, int idx,
322 return set_tls_entry(child, &info, idx, 0); 323 return set_tls_entry(child, &info, idx, 0);
323} 324}
324 325
325int sys_get_thread_area(struct user_desc __user *user_desc) 326SYSCALL_DEFINE1(get_thread_area, struct user_desc __user *, user_desc)
326{ 327{
327 struct user_desc info; 328 struct user_desc info;
328 int idx, ret; 329 int idx, ret;
diff --git a/arch/xtensa/include/asm/unistd.h b/arch/xtensa/include/asm/unistd.h
index c38834de9ac7..cb4c2ce8d447 100644
--- a/arch/xtensa/include/asm/unistd.h
+++ b/arch/xtensa/include/asm/unistd.h
@@ -4,14 +4,6 @@
4#define __ARCH_WANT_SYS_CLONE 4#define __ARCH_WANT_SYS_CLONE
5#include <uapi/asm/unistd.h> 5#include <uapi/asm/unistd.h>
6 6
7/*
8 * "Conditional" syscalls
9 *
10 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
11 * but it doesn't work on all toolchains, so we just do it by hand
12 */
13#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall");
14
15#define __ARCH_WANT_STAT64 7#define __ARCH_WANT_STAT64
16#define __ARCH_WANT_SYS_UTIME 8#define __ARCH_WANT_SYS_UTIME
17#define __ARCH_WANT_SYS_LLSEEK 9#define __ARCH_WANT_SYS_LLSEEK