Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48ee679a authored by Roland McGrath's avatar Roland McGrath Committed by Ingo Molnar
Browse files

x86: ia32 ptrace vs -ENOSYS sysenter/syscall



The previous "x86_64 ia32 ptrace vs -ENOSYS" fix only covered
the int $0x80 system call entries.  This does the same fix
for the sysenter and syscall instruction paths.

Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent a31f8dd7
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -162,12 +162,14 @@ sysenter_tracesys:
	SAVE_REST
	CLEAR_RREGS
	movq	%r9,R9(%rsp)
	movq	$-ENOSYS,RAX(%rsp)	/* really needed? */
	movq	$-ENOSYS,RAX(%rsp)/* ptrace can change this for a bad syscall */
	movq	%rsp,%rdi        /* &pt_regs -> arg1 */
	call	syscall_trace_enter
	LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
	RESTORE_REST
	xchgl	%ebp,%r9d
	cmpl	$(IA32_NR_syscalls-1),%eax
	ja	int_ret_from_sys_call /* sysenter_tracesys has set RAX(%rsp) */
	jmp	sysenter_do_call
	CFI_ENDPROC
ENDPROC(ia32_sysenter_target)
@@ -261,13 +263,15 @@ cstar_tracesys:
	SAVE_REST
	CLEAR_RREGS
	movq %r9,R9(%rsp)
	movq $-ENOSYS,RAX(%rsp)	/* really needed? */
	movq $-ENOSYS,RAX(%rsp)	/* ptrace can change this for a bad syscall */
	movq %rsp,%rdi        /* &pt_regs -> arg1 */
	call syscall_trace_enter
	LOAD_ARGS32 ARGOFFSET  /* reload args from stack in case ptrace changed it */
	RESTORE_REST
	xchgl %ebp,%r9d
	movl RSP-ARGOFFSET(%rsp), %r8d
	cmpl $(IA32_NR_syscalls-1),%eax
	ja int_ret_from_sys_call /* cstar_tracesys has set RAX(%rsp) */
	jmp cstar_do_call
END(ia32_cstar_target)