From: tip-bot for Denys Vlasenko <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: rostedt@goodmis.org, fweisbec@gmail.com, bp@alien8.de,
dvlasenk@redhat.com, linux-kernel@vger.kernel.org,
luto@amacapital.net, oleg@redhat.com,
torvalds@linux-foundation.org, mingo@kernel.org,
ast@plumgrid.com, wad@chromium.org, hpa@zytor.com,
tglx@linutronix.de, keescook@chromium.org
Subject: [tip:x86/asm] x86/asm/entry/32: Make register zero-extension more prominent
Date: Sat, 28 Mar 2015 01:40:15 -0700 [thread overview]
Message-ID: <tip-4ee8ec17ba00fce4af042543771f996fb9d98d34@git.kernel.org> (raw)
In-Reply-To: <1427452582-21624-3-git-send-email-dvlasenk@redhat.com>
Commit-ID: 4ee8ec17ba00fce4af042543771f996fb9d98d34
Gitweb: http://git.kernel.org/tip/4ee8ec17ba00fce4af042543771f996fb9d98d34
Author: Denys Vlasenko <dvlasenk@redhat.com>
AuthorDate: Fri, 27 Mar 2015 11:36:21 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 27 Mar 2015 12:27:57 +0100
x86/asm/entry/32: Make register zero-extension more prominent
There are a couple of syscall argument zero-extension instructions in
the 32-bit compat entry code, and it was mentioned that people keep
trying to optimize them out, introducing bugs.
Make them more visible, and add a "do not remove" comment.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Will Drewry <wad@chromium.org>
Link: http://lkml.kernel.org/r/1427452582-21624-3-git-send-email-dvlasenk@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/ia32/ia32entry.S | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 7502ff0..dec8c1d 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -122,8 +122,11 @@ ENTRY(ia32_sysenter_target)
movq PER_CPU_VAR(cpu_tss + TSS_sp0), %rsp
ENABLE_INTERRUPTS(CLBR_NONE)
+ /* Zero-extending 32-bit regs, do not remove */
+ movl %ebp, %ebp
+ movl %eax, %eax
+
/* Construct iret frame (ss,rsp,rflags,cs,rip) */
- movl %ebp,%ebp /* zero extension */
pushq_cfi $__USER32_DS
/*CFI_REL_OFFSET ss,0*/
pushq_cfi %rbp
@@ -134,7 +137,6 @@ ENTRY(ia32_sysenter_target)
CFI_REGISTER rip,r10
pushq_cfi $__USER32_CS
/*CFI_REL_OFFSET cs,0*/
- movl %eax, %eax
/* Store thread_info->sysenter_return in rip stack slot */
pushq_cfi %r10
CFI_REL_OFFSET rip,0
@@ -329,9 +331,11 @@ ENTRY(ia32_cstar_target)
movq PER_CPU_VAR(kernel_stack),%rsp
ENABLE_INTERRUPTS(CLBR_NONE)
+ /* Zero-extending 32-bit regs, do not remove */
+ movl %eax,%eax
+
ALLOC_PT_GPREGS_ON_STACK 6*8 /* 6*8: space for orig_ax and iret frame */
SAVE_C_REGS_EXCEPT_RCX_R891011
- movl %eax,%eax /* zero extension */
movq %rax,ORIG_RAX(%rsp)
movq %rcx,RIP(%rsp)
CFI_REL_OFFSET rip,RIP
@@ -471,7 +475,9 @@ ENTRY(ia32_syscall)
SWAPGS
ENABLE_INTERRUPTS(CLBR_NONE)
- movl %eax,%eax
+ /* Zero-extending 32-bit regs, do not remove */
+ movl %eax,%eax
+
pushq_cfi %rax /* store orig_ax */
cld
/* note the registers are not zero extended to the sf.
next prev parent reply other threads:[~2015-03-28 8:40 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-27 10:36 [PATCH 1/4] x86/asm/entry/64: Add forgotten CFI annotation Denys Vlasenko
2015-03-27 10:36 ` [PATCH 2/4] x86/asm/entry/32: Update "interrupt off" comments Denys Vlasenko
2015-03-28 8:39 ` [tip:x86/asm] " tip-bot for Denys Vlasenko
2015-03-27 10:36 ` [PATCH 3/4] x86/asm/entry/32: Make register zero-extension more prominent Denys Vlasenko
2015-03-28 8:40 ` tip-bot for Denys Vlasenko [this message]
2015-03-27 10:36 ` [PATCH 4/4] x86/asm/entry/32: Use PUSH instructions to build pt_regs on stack Denys Vlasenko
2015-03-27 11:32 ` Ingo Molnar
2015-03-27 12:09 ` Denys Vlasenko
2015-03-27 12:17 ` Ingo Molnar
2015-03-28 8:39 ` [tip:x86/asm] x86/asm/entry/64: Add missing CFI annotation tip-bot for Denys Vlasenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-4ee8ec17ba00fce4af042543771f996fb9d98d34@git.kernel.org \
--to=tipbot@zytor.com \
--cc=ast@plumgrid.com \
--cc=bp@alien8.de \
--cc=dvlasenk@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=wad@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.