summaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/process.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2017-12-12 13:25:54 +0100
committerIngo Molnar <mingo@kernel.org>2017-12-12 13:25:54 +0100
commit76523de61993d015f7895d06deacd3fd454574a1 (patch)
tree7b2890ac9733c55ff73c72bba7b6b5c788ba925b /arch/arm64/kernel/process.c
parente7ed9d9bd0375c74fe6e27d8bc73d3c6f4c8c3bc (diff)
parent50c4c4e268a2d7a3e58ebb698ac74da0de40ae36 (diff)
downloadlinux-76523de61993d015f7895d06deacd3fd454574a1.tar.gz
linux-76523de61993d015f7895d06deacd3fd454574a1.tar.bz2
linux-76523de61993d015f7895d06deacd3fd454574a1.zip
Merge tag 'v4.15-rc3' into perf/core, to refresh the tree
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/arm64/kernel/process.c')
-rw-r--r--arch/arm64/kernel/process.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index b2adcce7bc18..6b7dcf4310ac 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -314,6 +314,15 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start,
clear_tsk_thread_flag(p, TIF_SVE);
p->thread.sve_state = NULL;
+ /*
+ * In case p was allocated the same task_struct pointer as some
+ * other recently-exited task, make sure p is disassociated from
+ * any cpu that may have run that now-exited task recently.
+ * Otherwise we could erroneously skip reloading the FPSIMD
+ * registers for p.
+ */
+ fpsimd_flush_task_state(p);
+
if (likely(!(p->flags & PF_KTHREAD))) {
*childregs = *current_pt_regs();
childregs->regs[0] = 0;