]> git.baikalelectronics.ru Git - kernel.git/commit
MIPS: ptrace: Prevent writes to read-only FCSR bits
authorMaciej W. Rozycki <macro@imgtec.com>
Thu, 12 May 2016 09:19:08 +0000 (10:19 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 13:30:25 +0000 (15:30 +0200)
commitb290b1dfe1a8f6ddae09dbbc423622e6deb18cad
tree82c262eb2b5e4adb85436b0dfaff434213213626
parent8c29a9fd4e230dc6f3d16bcc4c30f9a8a753ca54
MIPS: ptrace: Prevent writes to read-only FCSR bits

Correct the cases missed with commit 36341133ce56 ("MIPS: Respect the
ISA level in FCSR handling") and prevent writes to read-only FCSR bits
there.

This in particular applies to FP context initialisation where any IEEE
754-2008 bits preset by `mips_set_personality_nan' are cleared before
the relevant ptrace(2) call takes effect and the PTRACE_POKEUSR request
addressing FPC_CSR where no masking of read-only FCSR bits is done.

Remove the FCSR clearing from FP context initialisation then and unify
PTRACE_POKEUSR/FPC_CSR and PTRACE_SETFPREGS handling, by factoring out
code from `ptrace_setfpregs' and calling it from both places.

This mostly matters to soft float configurations where the emulator can
be switched this way to a mode which should not be accessible and cannot
be set with the CTC1 instruction.  With hard float configurations any
effect is transient anyway as read-only bits will retain their values at
the time the FP context is restored.

Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
Cc: stable@vger.kernel.org # v4.0+
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/13239/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/ptrace.c