]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.arch/s390-08-04-compat-sigaltstack.diff
Add a patch to fix Intel E100 wake-on-lan problems.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / s390-08-04-compat-sigaltstack.diff
1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: kernel: 31 bit compat sigaltstack syscall fails with -EFAULT.
3 References: bnc#466462,LTC#50888
4
5 Symptom: When 31 bit user space programs call sigaltstack on a 64 bit Linux
6 OS, the system call returns -1 with errno=EFAULT.
7 Problem: 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.
11 Solution: Call sys32_sigaltstack_wrapper() instead of sys32_sigaltstack().
12 The wrapper function sets the high order bits to zero.
13
14 Acked-by: John Jolly <jjolly@suse.de>
15 ---
16 arch/s390/kernel/syscalls.S | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19 Index: 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 */