All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: fix a bug introduced by "allocate full pt_regs" commit
@ 2015-02-26 14:08 Denys Vlasenko
  2015-02-26 15:10 ` Andy Lutomirski
  0 siblings, 1 reply; 2+ messages in thread
From: Denys Vlasenko @ 2015-02-26 14:08 UTC (permalink / raw)
  To: Andy Lutomirski
  Cc: Denys Vlasenko, Linus Torvalds, Steven Rostedt, Ingo Molnar,
	Borislav Petkov, H. Peter Anvin, Oleg Nesterov,
	Frederic Weisbecker, Alexei Starovoitov, Will Drewry, Kees Cook,
	x86, linux-kernel

If syscall_trace_enter_phase1 returns 0,
code restores %rax from pt_regs->ax, but should restore it from
pt_regs->orig_ax.

The bug crept in because LOAD_ARGS macro was very sublty different
from RESTORE_ARGS, it had only two callsites and only this one
was using that difference.

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/kernel/entry_64.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index da61974..519498d 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -316,7 +316,8 @@ tracesys:
 	call syscall_trace_enter_phase1
 	test %rax, %rax
 	jnz tracesys_phase2		/* if needed, run the slow path */
-	RESTORE_C_REGS			/* else restore clobbered regs */
+	RESTORE_C_REGS_EXCEPT_RAX	/* else restore clobbered regs */
+	movq ORIG_RAX(%rsp), %rax
 	jmp system_call_fastpath	/*      and return to the fast path */
 
 tracesys_phase2:
-- 
1.8.1.4


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

* Re: [PATCH] x86: fix a bug introduced by "allocate full pt_regs" commit
  2015-02-26 14:08 [PATCH] x86: fix a bug introduced by "allocate full pt_regs" commit Denys Vlasenko
@ 2015-02-26 15:10 ` Andy Lutomirski
  0 siblings, 0 replies; 2+ messages in thread
From: Andy Lutomirski @ 2015-02-26 15:10 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Linus Torvalds, Steven Rostedt, Ingo Molnar, Borislav Petkov,
	H. Peter Anvin, Oleg Nesterov, Frederic Weisbecker,
	Alexei Starovoitov, Will Drewry, Kees Cook, X86 ML, linux-kernel

On Thu, Feb 26, 2015 at 6:08 AM, Denys Vlasenko <dvlasenk@redhat.com> wrote:
> If syscall_trace_enter_phase1 returns 0,
> code restores %rax from pt_regs->ax, but should restore it from
> pt_regs->orig_ax.
>
> The bug crept in because LOAD_ARGS macro was very sublty different
> from RESTORE_ARGS, it had only two callsites and only this one
> was using that difference.

I folded this in to the original patch to avoid breaking bisection.  I
put the missing -ARGOFFSET in and then removed it again in the
appropriate place later in the series.

--Andy

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

end of thread, other threads:[~2015-02-26 15:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-26 14:08 [PATCH] x86: fix a bug introduced by "allocate full pt_regs" commit Denys Vlasenko
2015-02-26 15:10 ` Andy Lutomirski

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.