From: Andy Lutomirski <luto@amacapital.net>
To: Thomas Gleixner <tglx@linutronix.de>, X86 ML <x86@kernel.org>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Cc: Sebastian Lackner <sebastian@fds-team.de>,
Anish Bhatt <anish@chelsio.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Chuck Ebbert <cebbert.lkml@gmail.com>,
Andy Lutomirski <luto@amacapital.net>
Subject: [PATCH v4 0/2] x86_64,entry: Clear NT on entry and speed up switch_to
Date: Wed, 1 Oct 2014 11:49:03 -0700 [thread overview]
Message-ID: <cover.1412189265.git.luto@amacapital.net> (raw)
Anish Bhatt noticed that user programs can set RFLAGS.NT before
syscall or sysenter, and the kernel entry code doesn't filter out
NT. This causes kernel C code and, depending on thread flags, the
exit slow path to run with NT set.
The former is a little bit scary (imagine calling into EFI with NT
set), and the latter will fail with #GP and send a spurious SIGSEGV.
One answer would be "don't do that". But the kernel can do better
here.
These patches filter NT on all kernel entries. For syscall (both
bitnesses), this is free. For sysenter, it seems to cost very
little (less than my ability to measure, although I didn't try that
hard). Patch 2, which isn't tagged for -stable, speeds up context
switches by avoiding saving and restoring flags, so this series
should be a decent overall performance win.
See: https://bugs.winehq.org/show_bug.cgi?id=33275
Note to bikeshedders: I have no desire to go crazy micro-optimizing
the sysenter path. :) This version seems to be good enough (and
should be a performance *increase* for most workloads).
Changes from v3:
- Added a better description of the impact in patch 1
Changes from v2:
- Move the flag fixup out of line
- Fix a CFI buglet
Changes from v1:
- Spell stable@vger.kernel.org correctly
- Tidy up changelog text
- Actually commit an asm constraint fix in patch 2 (egads!)
- Replace the unconditional popfq with a branch
Andy Lutomirski (2):
x86_64,entry: Filter RFLAGS.NT on entry from userspace
x86_64: Don't save flags on context switch
arch/x86/ia32/ia32entry.S | 18 +++++++++++++++++-
arch/x86/include/asm/switch_to.h | 12 ++++++++----
arch/x86/kernel/cpu/common.c | 2 +-
3 files changed, 26 insertions(+), 6 deletions(-)
--
1.9.3
next reply other threads:[~2014-10-01 18:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-01 18:49 Andy Lutomirski [this message]
2014-10-01 18:49 ` [PATCH v4 1/2] x86_64,entry: Filter RFLAGS.NT on entry from userspace Andy Lutomirski
2014-10-01 19:49 ` Andy Lutomirski
2014-10-02 15:36 ` H. Peter Anvin
2014-10-06 16:42 ` H. Peter Anvin
2014-10-06 18:07 ` [tip:x86/urgent] x86_64, entry: " tip-bot for Andy Lutomirski
2014-10-01 18:49 ` [PATCH v4 2/2] x86_64: Don't save flags on context switch Andy Lutomirski
2014-10-06 16:39 ` [PATCH v4 0/2] x86_64,entry: Clear NT on entry and speed up switch_to Andy Lutomirski
2014-10-06 16:41 ` H. Peter Anvin
2014-10-06 16:45 ` Andy Lutomirski
2014-10-06 16:57 ` H. Peter Anvin
2014-11-01 0:20 ` Rusty Russell
2014-11-01 1:00 ` Andy Lutomirski
2014-11-01 1:08 ` [PATCH] x86_64, entry: Fix out of bounds read on sysenter Andy Lutomirski
2014-11-01 2:28 ` Rusty Russell
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=cover.1412189265.git.luto@amacapital.net \
--to=luto@amacapital.net \
--cc=anish@chelsio.com \
--cc=cebbert.lkml@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=sebastian@fds-team.de \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).