MIPS: fix EVA & non-SMP non-FPU FP context signal handling
The save_fp_context & restore_fp_context pointers were being assigned to the wrong variables if either: - The kernel is configured for UP & runs on a system without an FPU, sinceb2ead52828
"MIPS: Move & rename fpu_emulator_{save,restore}_context". - The kernel is configured for EVA, sinceca750649e0
"MIPS: kernel: signal: Prevent save/restore FPU context in user memory". This would lead to FP context being clobbered incorrectly when setting up a sigcontext, then the garbage values being saved uselessly when returning from the signal. Fix by swapping the pointer assignments appropriately. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: stable@vger.kernel.org # v3.15+ Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/8230/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
cf0a8aa022
Коммит
14fa12df1d
|
@ -658,13 +658,13 @@ static int signal_setup(void)
|
|||
save_fp_context = _save_fp_context;
|
||||
restore_fp_context = _restore_fp_context;
|
||||
} else {
|
||||
save_fp_context = copy_fp_from_sigcontext;
|
||||
restore_fp_context = copy_fp_to_sigcontext;
|
||||
save_fp_context = copy_fp_to_sigcontext;
|
||||
restore_fp_context = copy_fp_from_sigcontext;
|
||||
}
|
||||
#endif /* CONFIG_SMP */
|
||||
#else
|
||||
save_fp_context = copy_fp_from_sigcontext;;
|
||||
restore_fp_context = copy_fp_to_sigcontext;
|
||||
save_fp_context = copy_fp_to_sigcontext;
|
||||
restore_fp_context = copy_fp_from_sigcontext;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче