* [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.