aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/vfork.S')
-rw-r--r--sysdeps/unix/sysv/linux/i386/vfork.S24
1 files changed, 1 insertions, 23 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/vfork.S b/sysdeps/unix/sysv/linux/i386/vfork.S
index 80c2058f1e..8846b61b96 100644
--- a/sysdeps/unix/sysv/linux/i386/vfork.S
+++ b/sysdeps/unix/sysv/linux/i386/vfork.S
@@ -20,6 +20,7 @@
#include <bits/errno.h>
#include <tcb-offsets.h>
+
/* Clone the calling process, but without copying the whole address space.
The calling process is suspended until the new process exits or is
replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
@@ -46,29 +47,6 @@ ENTRY (__vfork)
/* Branch forward if it failed. */
jae SYSCALL_ERROR_LABEL
-#if SHSTK_ENABLED
- /* Check if shadow stack is in use. */
- xorl %edx, %edx
- rdsspd %edx
- testl %edx, %edx
- /* Normal return if shadow stack isn't in use. */
- je L(no_shstk)
-
- testl %eax, %eax
- /* In parent, normal return. */
- jnz L(no_shstk)
-
- /* NB: In child, jump back to caller via indirect branch without
- popping shadow stack which is shared with parent. Keep shadow
- stack mismatched so that child returns in the vfork-calling
- function will trigger SIGSEGV. */
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- jmp *%ecx
-
-L(no_shstk):
-#endif
-
ret
PSEUDO_END (__vfork)