lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <bdff034e2f23c5eb974c760cf494cb5bddce8f29.1444091585.git.luto@kernel.org> Date: Mon, 5 Oct 2015 17:48:20 -0700 From: Andy Lutomirski <luto@...nel.org> To: x86@...nel.org, linux-kernel@...r.kernel.org Cc: Brian Gerst <brgerst@...il.com>, Denys Vlasenko <dvlasenk@...hat.com>, Linus Torvalds <torvalds@...ux-foundation.org>, Borislav Petkov <bp@...en8.de>, Andy Lutomirski <luto@...nel.org> Subject: [PATCH v2 32/36] x86/entry: Micro-optimize compat fast syscall arg fetch we're following a 32-bit pointer, and the uaccess code isn't smart enough to figure out that the access_ok check isn't needed. This saves about three cycles on a cache-hot fast syscall. Signed-off-by: Andy Lutomirski <luto@...nel.org> --- arch/x86/entry/common.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c index 6e1ea6a401f2..3ae6191ad1a2 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -394,8 +394,20 @@ __visible long do_fast_syscall_32(struct pt_regs *regs) * WARNING: We are in CONTEXT_USER and RCU isn't paying attention! */ local_irq_enable(); - if (get_user(*(u32 *)®s->cx, - (u32 __user __force *)(unsigned long)(u32)regs->sp)) { + if ( +#ifdef CONFIG_X86_64 + /* + * Micro-optimization: the pointer we're following is explicitly + * 32 bits, so it can't be out of range. + */ + __get_user(*(u32 *)®s->cx, + (u32 __user __force *)(unsigned long)(u32)regs->sp) +#else + get_user(*(u32 *)®s->cx, + (u32 __user __force *)(unsigned long)(u32)regs->sp) +#endif + ) { + /* User code screwed up. */ local_irq_disable(); regs->ax = -EFAULT; -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists