mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Mitigation for "clone on sparc might fail with -EFAULT for no valid reason" (bz 31394)
It seems the kernel can not deal with uncommitted stack space in the area intended for the register window when executing the clone() system call. So create a nested frame (proxy for the kernel frame) and flush it from the processor to memory to force committing pages to the stack before invoking the system call. Bug: https://www.mail-archive.com/debian-glibc@lists.debian.org/msg62592.html Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31394 See-also: https://lore.kernel.org/sparclinux/62f9be9d-a086-4134-9a9f-5df8822708af@mkarcher.dialup.fu-berlin.de/ Signed-off-by: Michael Karcher <sourceware-bugzilla@mkarcher.dialup.fu-berlin.de> Reviewed-by: DJ Delorie <dj@redhat.com>
This commit is contained in:
parent
aedbf08891
commit
faeaa3bc9f
@ -28,6 +28,9 @@
|
||||
.text
|
||||
ENTRY (__clone)
|
||||
save %sp,-96,%sp
|
||||
save %sp,-96,%sp
|
||||
flushw
|
||||
restore
|
||||
cfi_def_cfa_register(%fp)
|
||||
cfi_window_save
|
||||
cfi_register(%o7, %i7)
|
||||
|
@ -32,6 +32,9 @@
|
||||
|
||||
ENTRY (__clone)
|
||||
save %sp, -192, %sp
|
||||
save %sp, -192, %sp
|
||||
flushw
|
||||
restore
|
||||
cfi_def_cfa_register(%fp)
|
||||
cfi_window_save
|
||||
cfi_register(%o7, %i7)
|
||||
|
Loading…
Reference in New Issue
Block a user