]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.arch/s390-08-04-compat-sigaltstack.diff
Fix oinkmaster patch.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.arch / s390-08-04-compat-sigaltstack.diff
CommitLineData
4d1e5b62
AF
1From: Gerald Schaefer <geraldsc@de.ibm.com>
2Subject: kernel: 31 bit compat sigaltstack syscall fails with -EFAULT.
3References: bnc#466462,LTC#50888
4
5Symptom: When 31 bit user space programs call sigaltstack on a 64 bit Linux
6 OS, the system call returns -1 with errno=EFAULT.
7Problem: The 31 bit pointer passed to the system call is extended
8 to 64 bit, but the high order bits are not set to zero.
9 The kernel detects the invalid user space pointer and
10 returns -EFAULT.
11Solution: Call sys32_sigaltstack_wrapper() instead of sys32_sigaltstack().
12 The wrapper function sets the high order bits to zero.
13
14Acked-by: John Jolly <jjolly@suse.de>
15---
16 arch/s390/kernel/syscalls.S | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19Index: linux-sles11/arch/s390/kernel/syscalls.S
20===================================================================
21--- linux-sles11.orig/arch/s390/kernel/syscalls.S
22+++ linux-sles11/arch/s390/kernel/syscalls.S
23@@ -194,7 +194,7 @@ SYSCALL(sys_chown16,sys_ni_syscall,sys32
24 SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper)
25 SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper)
26 SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */
27-SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack)
28+SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper)
29 SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper)
30 NI_SYSCALL /* streams1 */
31 NI_SYSCALL /* streams2 */