1
linux/arch/mips
Xi Ruoyao 59be5c3585 mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan
If we still own the FPU after initializing fcr31, when we are preempted
the dirty value in the FPU will be read out and stored into fcr31,
clobbering our setting.  This can cause an improper floating-point
environment after execve().  For example:

    zsh% cat measure.c
    #include <fenv.h>
    int main() { return fetestexcept(FE_INEXACT); }
    zsh% cc measure.c -o measure -lm
    zsh% echo $((1.0/3)) # raising FE_INEXACT
    0.33333333333333331
    zsh% while ./measure; do ; done
    (stopped in seconds)

Call lose_fpu(0) before setting fcr31 to prevent this.

Closes: https://lore.kernel.org/linux-mips/7a6aa1bbdbbe2e63ae96ff163fab0349f58f1b9e.camel@xry111.site/
Fixes: 9b26616c8d ("MIPS: Respect the ISA level in FCSR handling")
Cc: stable@vger.kernel.org
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2024-01-27 11:08:04 +01:00
..
alchemy MIPS: Alchemy: Fix missing prototypes 2024-01-22 10:32:36 +01:00
ath25
ath79
bcm47xx MIPS: Fix typos 2024-01-08 10:39:12 +01:00
bcm63xx MIPS: BCM63XX: Fix missing prototypes 2024-01-26 10:33:20 +01:00
bmips
boot Just cleanups and fixes 2024-01-17 11:20:50 -08:00
cavium-octeon Just cleanups and fixes 2024-01-17 11:20:50 -08:00
cobalt MIPS: Cobalt: Fix missing prototypes 2024-01-22 10:32:21 +01:00
configs vfs-6.8.netfs 2024-01-19 09:10:23 -08:00
crypto
dec
fw MIPS: fw arc: Fix missing prototypes 2024-01-22 11:12:01 +01:00
generic
include MIPS: Alchemy: Fix missing prototypes 2024-01-22 10:32:36 +01:00
ingenic
jazz
kernel mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan 2024-01-27 11:08:04 +01:00
kvm Generic: 2024-01-17 13:03:37 -08:00
lantiq MIPS: lantiq: register smp_ops on non-smp platforms 2024-01-26 10:36:21 +01:00
lib
loongson2ef MIPS: Fix typos 2024-01-08 10:39:12 +01:00
loongson32
loongson64 MIPS: loongson64: set nid for reserved memblock region 2024-01-27 11:07:57 +01:00
math-emu
mm IOMMU Updates for Linux v6.8 2024-01-18 15:16:57 -08:00
mti-malta
n64
net MIPS: Fix typos 2024-01-08 10:39:12 +01:00
pci Just cleanups and fixes 2024-01-17 11:20:50 -08:00
pic32
power mips: suspend: include linux/suspend.h as needed 2023-12-10 17:21:41 -08:00
ralink MIPS: Fix typos 2024-01-08 10:39:12 +01:00
rb532
sgi-ip22
sgi-ip27 MIPS: sgi-ip27: Fix missing prototypes 2024-01-22 11:11:49 +01:00
sgi-ip30 MIPS: sgi-ip30: Fix missing prototypes 2024-01-22 11:12:08 +01:00
sgi-ip32 MIPS: sgi-ip32: Fix missing prototypes 2024-01-22 11:12:19 +01:00
sibyte
sni
tools
txx9 MIPS: Fix typos 2024-01-08 10:39:12 +01:00
vdso
Kbuild
Kbuild.platforms
Kconfig
Kconfig.debug
Makefile
Makefile.postlink