diff options
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r-- | arch/x86/kernel/process.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index f804dc935d2a..b9ba9d52020e 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -64,14 +64,13 @@ EXPORT_SYMBOL_GPL(task_xstate_cachep); | |||
64 | */ | 64 | */ |
65 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) | 65 | int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) |
66 | { | 66 | { |
67 | int ret; | ||
68 | |||
69 | *dst = *src; | 67 | *dst = *src; |
70 | if (fpu_allocated(&src->thread.fpu)) { | 68 | |
71 | memset(&dst->thread.fpu, 0, sizeof(dst->thread.fpu)); | 69 | memset(&dst->thread.fpu, 0, sizeof(dst->thread.fpu)); |
72 | ret = fpu_alloc(&dst->thread.fpu); | 70 | if (tsk_used_math(src)) { |
73 | if (ret) | 71 | int err = fpu_alloc(&dst->thread.fpu); |
74 | return ret; | 72 | if (err) |
73 | return err; | ||
75 | fpu_copy(dst, src); | 74 | fpu_copy(dst, src); |
76 | } | 75 | } |
77 | return 0; | 76 | return 0; |