Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1340045
| From | Andy Lutomirski <luto@amacapital.net> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 04/10] x86/xsaves: Introduce a new check that allows correct xstates copy from kernel to user directly |
| Date | 2016-02-22 23:50 +0100 |
| Message-ID | <r57sK-4qG-13@gated-at.bofh.it> (permalink) |
| References | <r541R-1YW-45@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Mon, Feb 22, 2016 at 10:58 AM, Yu-cheng Yu <yu-cheng.yu@intel.com> wrote:
> XSAVES is a kernel instruction and uses a compacted format. When
> working with user space, the kernel should provide standard-format,
> non-supervisor state data. We cannot do __copy_to_user() from a compacted-
> format kernel xstate area to a signal frame.
>
> Note that the path to copy_fpstate_to_sigframe() does currently check if
> the thread has used FPU, but add a WARN_ONCE() there to detect any
> potential mis-use.
>
> Dave Hansen proposes this method to simplify copy xstate directly to user.
>
> Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
> Signed-off by: Yu-cheng Yu <yu-cheng.yu@intel.com>
> ---
> arch/x86/kernel/fpu/signal.c | 41 ++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c
> index 0fbf60c..7676718 100644
> --- a/arch/x86/kernel/fpu/signal.c
> +++ b/arch/x86/kernel/fpu/signal.c
> @@ -130,6 +130,45 @@ static inline int copy_fpregs_to_sigframe(struct xregs_state __user *buf)
> return err;
> }
>
> +static int should_save_registers_directly(void)
I don't like the name of this function because:
> +{
> + /*
> + * In signal handling path, the kernel already checks if
> + * FPU instructions have been used before it calls
> + * copy_fpstate_to_sigframe(). We check this here again
> + * to detect any potential mis-use and saving invalid
> + * register values directly to a signal frame.
> + */
> + WARN_ONCE(!current->thread.fpu.fpstate_active,
> + "direct FPU save with no math use\n");
... Here "direct" seems to mean that we're asking whether to directly save ...
> +
> + /*
> + * In the case that we are using a compacted kernel
> + * xsave area, we can not copy the thread.fpu.state
> + * directly to userspace and *must* save it from the
> + * registers directly.
> + */
... and here "directly" means *both* copying directly to userspace and
saving using xsave directly.
So can you rename it to something with an obvious meaning like
"may_memcpy_fpu_regs" or similar?
--Andy
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 04/10] x86/xsaves: Introduce a new check that allows correct xstates copy from kernel to user directly Yu-cheng Yu <yu-cheng.yu@intel.com> - 2016-02-22 20:10 +0100
Re: [PATCH 04/10] x86/xsaves: Introduce a new check that allows correct xstates copy from kernel to user directly Andy Lutomirski <luto@amacapital.net> - 2016-02-22 23:50 +0100
Re: [PATCH 04/10] x86/xsaves: Introduce a new check that allows correct xstates copy from kernel to user directly Yu-cheng Yu <yu-cheng.yu@intel.com> - 2016-02-23 00:40 +0100
Re: [PATCH 04/10] x86/xsaves: Introduce a new check that allows correct xstates copy from kernel to user directly Andy Lutomirski <luto@amacapital.net> - 2016-02-23 00:40 +0100
csiph-web