aboutsummaryrefslogtreecommitdiff
path: root/arch/arm64/kernel
diff options
context:
space:
mode:
authorJanet Liu <janet.liu@spreadtrum.com>2015-06-11 12:04:32 +0800
committerMoyster <oysterized@gmail.com>2016-09-10 12:06:58 +0200
commit0698ae6597067c2ea04564cb61eeb5c3ccd95438 (patch)
tree7f9342be894dc9c07e0dfed19acf5f3c73f45709 /arch/arm64/kernel
parent13ffab6bbcfeedb9c125d934248ecebe8fdb7bd2 (diff)
arm64: kernel thread don't need to save fpsimd context.
kernel thread's default fpsimd state is zero. When fork a thread, if parent is kernel thread, and save hardware context to parent's fpsimd state, but this hardware context is user process's context, because kernel thread don't use fpsimd, it will not introduce issue, it add a little cost. Change-Id: I292c0b328983b1ecaf642503183473c12bb1207b Signed-off-by: Janet Liu <janet.liu@spreadtrum.com> Signed-off-by: Chunyan Zhang <chunyan.zhang@spreadtrum.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Git-commit: 6eb6c80187c55b7f95683bc6502dccac54b95b92 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git Signed-off-by: Se Wang (Patrick) Oh <sewango@codeaurora.org> Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
Diffstat (limited to 'arch/arm64/kernel')
-rw-r--r--arch/arm64/kernel/process.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index ad14dbc07..0e3a980d0 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -385,7 +385,8 @@ void release_thread(struct task_struct *dead_task)
int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
{
- fpsimd_preserve_current_state();
+ if (current->mm)
+ fpsimd_preserve_current_state();
*dst = *src;
return 0;
}