diff options
author | Michal Simek <michal.simek@xilinx.com> | 2013-08-13 19:00:53 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-20 11:43:02 -0400 |
commit | 4f01c72ef36d3305d6273fe7f1f6670c52745c3d (patch) | |
tree | ab71ffb7a755c453f84a2aaf37fe285d0bcdcd31 /arch | |
parent | 0dcf19b4fb41449de4d1f953f86aa6a90accdff5 (diff) |
microblaze: fix clone syscall
commit dfa9771a7c4784bafd0673bc7abcee3813088b77 upstream.
Fix inadvertent breakage in the clone syscall ABI for Microblaze that
was introduced in commit f3268edbe6fe ("microblaze: switch to generic
fork/vfork/clone").
The Microblaze syscall ABI for clone takes the parent tid address in the
4th argument; the third argument slot is used for the stack size. The
incorrectly-used CLONE_BACKWARDS type assigned parent tid to the 3rd
slot.
This commit restores the original ABI so that existing userspace libc
code will work correctly.
All kernel versions from v3.8-rc1 were affected.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/Kconfig | 6 | ||||
-rw-r--r-- | arch/microblaze/Kconfig | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index a4429bcd609e..00e3702ec79b 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
@@ -404,6 +404,12 @@ config CLONE_BACKWARDS2 | |||
404 | help | 404 | help |
405 | Architecture has the first two arguments of clone(2) swapped. | 405 | Architecture has the first two arguments of clone(2) swapped. |
406 | 406 | ||
407 | config CLONE_BACKWARDS3 | ||
408 | bool | ||
409 | help | ||
410 | Architecture has tls passed as the 3rd argument of clone(2), | ||
411 | not the 5th one. | ||
412 | |||
407 | config ODD_RT_SIGACTION | 413 | config ODD_RT_SIGACTION |
408 | bool | 414 | bool |
409 | help | 415 | help |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index d22a4ecffff4..4fab52294d98 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -28,7 +28,7 @@ config MICROBLAZE | |||
28 | select GENERIC_CLOCKEVENTS | 28 | select GENERIC_CLOCKEVENTS |
29 | select GENERIC_IDLE_POLL_SETUP | 29 | select GENERIC_IDLE_POLL_SETUP |
30 | select MODULES_USE_ELF_RELA | 30 | select MODULES_USE_ELF_RELA |
31 | select CLONE_BACKWARDS | 31 | select CLONE_BACKWARDS3 |
32 | 32 | ||
33 | config SWAP | 33 | config SWAP |
34 | def_bool n | 34 | def_bool n |