From: Brian Gerst <brgerst@gmail.com>
To: hpa@zytor.com
Cc: x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 06/11] x86-64: Fix %cs value in convert_from_fxsr()
Date: Sat, 28 Aug 2010 12:04:33 -0400 [thread overview]
Message-ID: <1283011478-27237-7-git-send-email-brgerst@gmail.com> (raw)
In-Reply-To: <1283011478-27237-1-git-send-email-brgerst@gmail.com>
While %ds still contains the userspace selector, %cs is KERNEL_CS
at this point. Always get %cs from pt_regs.
It actually is possible to get the correct segments for compat tasks,
but that involves using the [f]xsave instruction without a REX.W prefix.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
arch/x86/kernel/i387.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index c795675..b1a732d 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -383,19 +383,17 @@ convert_from_fxsr(struct user_i387_ia32_struct *env, struct task_struct *tsk)
#ifdef CONFIG_X86_64
env->fip = fxsave->rip;
env->foo = fxsave->rdp;
+ /*
+ * should be actually ds/cs at fpu exception time, but
+ * that information is not available in 64bit mode.
+ */
+ env->fcs = task_pt_regs(tsk)->cs;
if (tsk == current) {
- /*
- * should be actually ds/cs at fpu exception time, but
- * that information is not available in 64bit mode.
- */
- asm("mov %%ds, %[fos]" : [fos] "=r" (env->fos));
- asm("mov %%cs, %[fcs]" : [fcs] "=r" (env->fcs));
+ savesegment(ds, env->fos);
} else {
- struct pt_regs *regs = task_pt_regs(tsk);
-
- env->fos = 0xffff0000 | tsk->thread.ds;
- env->fcs = regs->cs;
+ env->fos = tsk->thread.ds;
}
+ env->fos |= 0xffff0000;
#else
env->fip = fxsave->fip;
env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);
--
1.7.2.2
next prev parent reply other threads:[~2010-08-28 16:06 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-28 16:04 x86: FPU cleanups Brian Gerst
2010-08-28 16:04 ` [PATCH 01/11] x86: Use correct type for %cr4 Brian Gerst
2010-08-29 18:24 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 02/11] x86: Merge fpu_init() Brian Gerst
2010-08-29 18:29 ` Pekka Enberg
2010-08-30 0:44 ` Brian Gerst
2010-08-28 16:04 ` [PATCH 03/11] x86: Merge tolerant_fwait() Brian Gerst
2010-08-29 18:32 ` Pekka Enberg
2010-08-30 0:35 ` Brian Gerst
2010-08-30 5:47 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 04/11] x86: Merge __save_init_fpu() Brian Gerst
2010-08-29 18:33 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 05/11] x86-64: Disable preemption when using TS_USEDFPU Brian Gerst
2010-08-29 18:38 ` Pekka Enberg
2010-08-28 16:04 ` Brian Gerst [this message]
2010-08-29 18:41 ` [PATCH 06/11] x86-64: Fix %cs value in convert_from_fxsr() Pekka Enberg
2010-08-30 0:25 ` Brian Gerst
2010-08-30 6:44 ` Pekka Enberg
2010-08-30 11:38 ` Brian Gerst
2010-08-28 16:04 ` [PATCH 07/11] x86-64: Simplify constraints for fxsave/fxtstor Brian Gerst
2010-08-29 18:45 ` Pekka Enberg
2010-08-29 23:44 ` Brian Gerst
2010-08-30 5:56 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 08/11] x86-32: Remove math_emulate stub Brian Gerst
2010-08-29 18:47 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 09/11] x86: Merge fpu_save_init() Brian Gerst
2010-08-29 18:54 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 10/11] x86: Remove unnecessary ifdefs from i387 code Brian Gerst
2010-08-29 19:00 ` Pekka Enberg
2010-08-29 23:38 ` Brian Gerst
2010-08-30 5:44 ` Pekka Enberg
2010-08-30 11:21 ` Brian Gerst
2010-08-30 11:25 ` Pekka Enberg
2010-08-28 16:04 ` [PATCH 11/11] x86: Remove PSHUFB_XMM5_* macros Brian Gerst
2010-08-29 19:02 ` Pekka Enberg
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=1283011478-27237-7-git-send-email-brgerst@gmail.com \
--to=brgerst@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--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
Powered by JetHome