Just in case, 1, 2, and 9 looks good to me. I didn't get the rest of this series, but I am sure it doesn't need my review ;)
On 03/26, Dave Hansen wrote: > > From: Dave Hansen <dave.han...@linux.intel.com> > > The MPX code appears to be saving off the FPU in an unsafe > way. It does not disable preemption or ensure that the > FPU state has been allocated. > > This patch introduces a new helper which will do both of > those things internally. > > Note that this requires a patch from Oleg in order to work > properly. It is currently in tip/x86/fpu. > > > commit f893959b0898bd876673adbeb6798bdf25c034d7 > > Author: Oleg Nesterov <o...@redhat.com> > > Date: Fri Mar 13 18:30:30 2015 +0100 > > > > x86/fpu: Don't abuse drop_init_fpu() in flush_thread() > > Signed-off-by: Dave Hansen <dave.han...@linux.intel.com> > Cc: Oleg Nesterov <o...@redhat.com> > Cc: b...@alien8.de > Cc: Rik van Riel <r...@redhat.com> > Cc: Suresh Siddha <sbsid...@gmail.com> > Cc: Andy Lutomirski <l...@amacapital.net> > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: Ingo Molnar <mi...@redhat.com> > Cc: "H. Peter Anvin" <h...@zytor.com> > Cc: Fenghua Yu <fenghua...@intel.com> > Cc: the arch/x86 maintainers <x...@kernel.org> > --- > > b/arch/x86/include/asm/xsave.h | 1 + > b/arch/x86/kernel/xsave.c | 32 ++++++++++++++++++++++++++++++++ > 2 files changed, 33 insertions(+) > > diff -puN arch/x86/include/asm/xsave.h~tsk_get_xsave_addr > arch/x86/include/asm/xsave.h > --- a/arch/x86/include/asm/xsave.h~tsk_get_xsave_addr 2015-03-26 > 11:27:04.738204327 -0700 > +++ b/arch/x86/include/asm/xsave.h 2015-03-26 11:27:04.743204552 -0700 > @@ -252,6 +252,7 @@ static inline int xrestore_user(struct x > } > > void *get_xsave_addr(struct xsave_struct *xsave, int xstate); > +void *tsk_get_xsave_field(struct task_struct *tsk, int xstate_field); > void setup_xstate_comp(void); > > #endif > diff -puN arch/x86/kernel/xsave.c~tsk_get_xsave_addr arch/x86/kernel/xsave.c > --- a/arch/x86/kernel/xsave.c~tsk_get_xsave_addr 2015-03-26 > 11:27:04.740204417 -0700 > +++ b/arch/x86/kernel/xsave.c 2015-03-26 11:27:04.744204597 -0700 > @@ -740,3 +740,35 @@ void *get_xsave_addr(struct xsave_struct > return (void *)xsave + xstate_comp_offsets[feature]; > } > EXPORT_SYMBOL_GPL(get_xsave_addr); > + > +/* > + * This wraps up the common operations that need to occur when retrieving > + * data from an xsave struct. It first ensures that the task was actually > + * using the FPU and retrieves the data in to a buffer. It then calculates > + * the offset of the requested field in the buffer. > + * > + * This function is safe to call whether the FPU is in use or not. > + * > + * Inputs: > + * tsk: the task from which we are fetching xsave state > + * xstate: state which is defined in xsave.h (e.g. XSTATE_FP, XSTATE_SSE, > + * etc.) > + * Output: > + * address of the state in the xsave area. > + */ > +void *tsk_get_xsave_field(struct task_struct *tsk, int xsave_field) > +{ > + union thread_xstate *xstate; > + > + if (!used_math()) > + return NULL; > + /* > + * unlazy_fpu() is poorly named and will actually > + * save the xstate off in to the memory buffer. > + */ > + unlazy_fpu(tsk); > + xstate = tsk->thread.fpu.state; > + > + return get_xsave_addr(&xstate->xsave, xsave_field); > +} > +EXPORT_SYMBOL_GPL(tsk_get_xsave_field); > _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/