Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, fpu: Use static_cpu_has() to implement use_xsave() x86: Add new static_cpu_has() function using alternatives x86, fpu: Use the proper asm constraint in use_xsave() x86, fpu: Unbreak FPU emulation x86: Introduce 'struct fpu' and related API x86: Eliminate TS_XSAVE x86-32: Don't set ignore_fpu_irq in simd exception x86: Merge kernel_math_error() into math_error() x86: Merge simd_math_error() into math_error() x86-32: Rework cache flush denied handler Fix trivial conflict in arch/x86/kernel/process.c
This commit is contained in:
@@ -31,24 +31,22 @@ struct kmem_cache *task_xstate_cachep;
|
||||
|
||||
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
|
||||
{
|
||||
int ret;
|
||||
|
||||
*dst = *src;
|
||||
if (src->thread.xstate) {
|
||||
dst->thread.xstate = kmem_cache_alloc(task_xstate_cachep,
|
||||
GFP_KERNEL);
|
||||
if (!dst->thread.xstate)
|
||||
return -ENOMEM;
|
||||
WARN_ON((unsigned long)dst->thread.xstate & 15);
|
||||
memcpy(dst->thread.xstate, src->thread.xstate, xstate_size);
|
||||
if (fpu_allocated(&src->thread.fpu)) {
|
||||
memset(&dst->thread.fpu, 0, sizeof(dst->thread.fpu));
|
||||
ret = fpu_alloc(&dst->thread.fpu);
|
||||
if (ret)
|
||||
return ret;
|
||||
fpu_copy(&dst->thread.fpu, &src->thread.fpu);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void free_thread_xstate(struct task_struct *tsk)
|
||||
{
|
||||
if (tsk->thread.xstate) {
|
||||
kmem_cache_free(task_xstate_cachep, tsk->thread.xstate);
|
||||
tsk->thread.xstate = NULL;
|
||||
}
|
||||
fpu_free(&tsk->thread.fpu);
|
||||
}
|
||||
|
||||
void free_thread_info(struct thread_info *ti)
|
||||
|
Reference in New Issue
Block a user