All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/asm/entry/32: Reinstate clearing of pt_regs->r8..r11 on EFAULT path
@ 2015-06-07 18:24 Denys Vlasenko
  2015-06-08  6:50 ` Ingo Molnar
  2015-06-08 22:24 ` [tip:x86/asm] x86/asm/entry/32: Reinstate clearing of pt_regs-> r8..r11 " tip-bot for Denys Vlasenko
  0 siblings, 2 replies; 4+ messages in thread
From: Denys Vlasenko @ 2015-06-07 18:24 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Denys Vlasenko, Linus Torvalds, Steven Rostedt, Borislav Petkov,
	H. Peter Anvin, Andy Lutomirski, Oleg Nesterov,
	Frederic Weisbecker, Alexei Starovoitov, Will Drewry, Kees Cook,
	x86, linux-kernel

I broke this recently when I changed pt_regs->r8..r11 clearing logic
in INT 80 code path.

There is a branch from SYSENTER/SYSCALL code to INT 80 code:
if we fail to retrieve arg6, we return EFAULT. Before this patch,
in this case we don't clear pt_regs->r8..r11.

This patch fixes this. The resulting code is smaller and simpler.

While at it, remove incorrect comment about syscall dispatching CALL insn:
it does not use RIP-relative addressing form (the comment was meant to be
"TODO: make this rip-relative", and morphed since then, dropping "TODO").

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@kernel.org>
CC: Borislav Petkov <bp@alien8.de>
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Andy Lutomirski <luto@amacapital.net>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
CC: Alexei Starovoitov <ast@plumgrid.com>
CC: Will Drewry <wad@chromium.org>
CC: Kees Cook <keescook@chromium.org>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---
 arch/x86/entry/entry_64_compat.S | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S
index 9558dac..b80f8d4 100644
--- a/arch/x86/entry/entry_64_compat.S
+++ b/arch/x86/entry/entry_64_compat.S
@@ -413,9 +413,7 @@ END(ia32_cstar_target)
 
 ia32_badarg:
 	ASM_CLAC
-	movq	$-EFAULT, %rax
-	jmp	ia32_sysret
-
+	movq	$-EFAULT, RAX(%rsp)
 ia32_ret_from_sys_call:
 	xorl	%eax, %eax		/* Do not leak kernel information */
 	movq	%rax, R11(%rsp)
@@ -486,9 +484,7 @@ ia32_do_call:
 	cmpq	$(IA32_NR_syscalls-1), %rax
 	ja	1f
 
-	call	*ia32_sys_call_table(, %rax, 8) /* RIP relative */
-
-ia32_sysret:
+	call	*ia32_sys_call_table(, %rax, 8)
 	movq	%rax, RAX(%rsp)
 1:
 	jmp	int_ret_from_sys_call
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-06-08 22:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-07 18:24 [PATCH] x86/asm/entry/32: Reinstate clearing of pt_regs->r8..r11 on EFAULT path Denys Vlasenko
2015-06-08  6:50 ` Ingo Molnar
2015-06-08 12:55   ` Denys Vlasenko
2015-06-08 22:24 ` [tip:x86/asm] x86/asm/entry/32: Reinstate clearing of pt_regs-> r8..r11 " tip-bot for Denys Vlasenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.