android_kernel_samsung_sm8650/arch/mips
Xi Ruoyao e333bbb557 mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan
commit 59be5c35850171e307ca5d3d703ee9ff4096b948 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-31 16:17:12 -08:00
..
alchemy MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup() 2024-01-25 15:27:45 -08:00
ar7
ath25 MIPS: ath25: Constify static irq_domain_ops 2022-02-22 09:39:03 +01:00
ath79 MIPS: ath79: Remove one of the identical args in early_printk 2022-07-08 15:13:26 +02:00
bcm47xx MIPS: BCM47XX: Cast memcmp() of function to (void *) 2022-09-19 16:46:01 +02:00
bcm63xx MIPS: BCM63xx: Add check for NULL for clk in clk_enable 2022-12-31 13:32:00 +01:00
bmips mips: bmips: BCM6358: disable RAC flush for TP1 2023-04-06 12:10:42 +02:00
boot MIPS: dts: loongson: drop incorrect dwmac fallback compatible 2024-01-20 11:50:07 +01:00
cavium-octeon MIPS: OCTEON: warn only once if deprecated link status is being used 2022-12-31 13:32:00 +01:00
cobalt
configs - hfs and hfsplus kmap API modernization from Fabio Francesco 2022-10-12 11:00:22 -07:00
crypto crypto: Kconfig - simplify cipher entries 2022-08-26 18:50:43 +08:00
dec MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
fw MIPS: fw: Allow firmware to pass a empty env 2023-05-11 23:03:01 +09:00
generic arch: mips: generic: Add missing of_node_put() in board-ranchu.c 2022-06-21 17:04:30 +02:00
include mips: dmi: Fix early remap on MIPS32 2024-01-25 15:27:45 -08:00
ingenic
jazz MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
kernel mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan 2024-01-31 16:17:12 -08:00
kvm MIPS: KVM: Fix a build warning about variable set but not used 2023-12-03 07:32:09 +01:00
lantiq MIPS: lantiq: register smp_ops on non-smp platforms 2024-01-31 16:17:12 -08:00
lib MIPS: Simplify __bswapdi2() and __bswapsi2() 2022-09-30 16:50:00 +02:00
loongson2ef MIPS: Loongson: Move arch cflags to MIPS top level Makefile 2023-08-03 10:23:50 +02:00
loongson32 MIPS: Loongson32: Fix PHY-mode being left unspecified 2022-09-19 16:31:32 +02:00
loongson64 MIPS: Loongson64: Enable DMA noncoherent support 2023-12-13 18:39:29 +01:00
math-emu MIPS: Fix comment typo 2022-09-12 15:33:24 +02:00
mm mips: Fix max_mapnr being uninitialized on early stages 2024-01-31 16:16:59 -08:00
mti-malta mips: mti-malta: Fix refcount leak in malta-time.c 2022-06-21 17:04:30 +02:00
n64
net bpf, mips: No need to use min() to get MAX_TAIL_CALL_CNT 2022-08-29 15:38:14 +02:00
pci MIPS: pci: lantiq: switch to using gpiod API 2022-10-01 18:07:51 +02:00
pic32 MIPS: pic32: treat port as signed integer 2022-11-11 15:53:58 +01:00
power
ralink of/fdt: run soc memory setup when early_init_dt_scan_memory fails 2023-01-12 12:02:51 +01:00
rb532 MIPS: rb532: move GPIOD definition into C-files 2022-03-30 20:26:26 +02:00
sgi-ip22 mips: sgi-ip22: Drop redundant check from .remove() 2022-07-05 11:10:17 +02:00
sgi-ip27 MIPS: SGI-IP27: Fix platform-device leak in bridge_platform_create() 2022-09-19 16:33:27 +02:00
sgi-ip30 MIPS: SGI-IP30: Fix platform-device leak in bridge_platform_create() 2022-09-19 16:32:54 +02:00
sgi-ip32 MIPS: Allow modules to set board_be_handler 2021-11-09 16:07:26 +01:00
sibyte MIPS: remove orphan sb1250_time_init() declaration 2022-09-24 11:46:58 +02:00
sni MIPS: sni: Fix the build 2021-10-18 18:09:54 +02:00
tools MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
txx9 MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
vdso MIPS: Use "grep -E" instead of "egrep" 2023-09-23 11:11:08 +02:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kbuild.platforms MIPS: Remove VR41xx support 2022-07-14 11:52:29 +02:00
Kconfig MIPS: Loongson64: Enable DMA noncoherent support 2023-12-13 18:39:29 +01:00
Kconfig.debug
Makefile MIPS: Use "grep -E" instead of "egrep" 2023-09-23 11:11:08 +02:00
Makefile.postlink