Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6db83cea authored by Jiang Liu's avatar Jiang Liu Committed by Catalin Marinas
Browse files

arm64: fix possible invalid FPSIMD initialization state



If context switching happens during executing fpsimd_flush_thread(),
stale value in FPSIMD registers will be saved into current thread's
fpsimd_state by fpsimd_thread_switch(). That may cause invalid
initialization state for the new process, so disable preemption
when executing fpsimd_flush_thread().

Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
Cc: Jiang Liu <liuj97@gmail.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent fc18047c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -80,8 +80,10 @@ void fpsimd_thread_switch(struct task_struct *next)

void fpsimd_flush_thread(void)
{
	preempt_disable();
	memset(&current->thread.fpsimd_state, 0, sizeof(struct fpsimd_state));
	fpsimd_load_state(&current->thread.fpsimd_state);
	preempt_enable();
}

#ifdef CONFIG_KERNEL_MODE_NEON