linux-stable/arch/mips/kernel
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
..
syscalls lsm/stable-6.8 PR 20240105 2024-01-09 12:57:46 -08:00
.gitignore
access-helper.h MIPS: Fix new sparse warnings 2021-04-07 16:11:05 +02:00
asm-offsets.c mips: asm-offsets: add missing prototypes 2023-06-09 10:18:42 +02:00
bmips_5xxx_init.S
bmips_vec.S
branch.c
cacheinfo.c drivers: base: cacheinfo: Get rid of DEFINE_SMP_CALL_CACHE_FUNCTION() 2021-09-01 10:29:10 +02:00
cevt-bcm1480.c
cevt-ds1287.c
cevt-gt641xx.c
cevt-r4k.c MIPS: cevt-r4k: Offset the value used to clear compare interrupt 2023-02-27 23:45:17 +01:00
cevt-sb1250.c
cevt-txx9.c
cmpxchg.c MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
cps-vec-ns16550.S
cps-vec.S MIPS: smp-cps: Disable coherence setup for unsupported ISA 2023-04-05 09:45:08 +02:00
cpu-probe.c Just cleanups and fixes 2024-01-17 11:20:50 -08:00
cpu-r3k-probe.c mips: move cache declarations into header 2023-12-10 17:21:41 -08:00
crash.c
crash_dump.c vmcore: convert copy_oldmem_page() to take an iov_iter 2022-04-29 14:37:59 -07:00
csrc-bcm1480.c
csrc-ioasic.c
csrc-r4k.c
csrc-sb1250.c
early_printk.c
early_printk_8250.c
elf.c mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan 2024-01-27 11:08:04 +01:00
entry.S MIPS: Remove TX39XX support 2022-03-01 10:07:22 +01:00
fpu-probe.c
fpu-probe.h
ftrace.c MIPS: kernel: Remove not needed set_fs calls 2021-04-06 14:36:56 +02:00
genex.S MIPS: Allow vectored interrupt handler to reside everywhere for 64bit 2023-12-30 15:36:01 +01:00
gpio_txx9.c
head.S
i8253.c
idle.c cpuidle,arch: Mark all regular cpuidle_state:: Enter methods __cpuidle 2023-01-13 11:48:18 +01:00
irq-gt641xx.c
irq-msc01.c
irq.c MIPS: Only use current_stack_pointer on GCC 2022-03-14 15:02:53 +01:00
irq_txx9.c MIPS: Remove TX39XX support 2022-03-01 10:07:22 +01:00
jump_label.c MIPS: jump_label: Fix compat branch range check 2022-11-11 15:46:03 +01:00
kgdb.c
kprobes.c MIPS: Fix typos 2024-01-08 10:39:12 +01:00
linux32.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
machine_kexec.c mips: kexec: include linux/reboot.h 2023-12-10 17:21:42 -08:00
Makefile mips, kexec: fix the incorrect ifdeffery and dependency of CONFIG_KEXEC 2023-12-12 17:20:18 -08:00
mcount.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
mips-cm.c mips: mark local function static if possible 2023-12-10 17:21:39 -08:00
mips-cpc.c mips: cpc: Fix refcount leak in mips_cpc_default_phys_base 2022-04-26 15:11:25 +02:00
mips-mt-fpaff.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
mips-mt.c mips: mt: include asm/mips_mt.h 2023-12-10 17:21:41 -08:00
mips-r2-to-r6-emul.c MIPS: Fix build error due to PTR used in more places 2022-01-27 09:04:19 +01:00
module.c mips: move jump_label_apply_nops() declaration to header 2023-12-10 17:21:40 -08:00
octeon_switch.S mips: remove unneeded #include <asm/export.h> 2023-08-15 10:22:23 +02:00
perf_event.c
perf_event_mipsxx.c MIPS: fix typos in comments 2022-05-04 22:22:59 +02:00
perf_regs.c
pm-cps.c
pm.c
probes-common.h
proc.c MIPS: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK 2022-07-14 11:49:40 +02:00
process.c MIPS: kernel: Clear FPU states when setting up kernel threads 2023-12-05 18:47:11 +01:00
prom.c mips: Set dump-stack arch description 2023-12-21 15:33:44 +01:00
ptrace.c mips: ptrace: user_regset_copyin_ignore() always returns 0 2022-11-15 14:30:40 -08:00
ptrace32.c
r4k-bugs64.c mips: add missing declarations for trap handlers 2023-12-10 17:21:38 -08:00
r4k_fpu.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
r4k_switch.S
r2300_fpu.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
r2300_switch.S mips: remove unneeded #include <asm/export.h> 2023-08-15 10:22:23 +02:00
relocate.c MIPS: Fix typos 2024-01-08 10:39:12 +01:00
relocate_kernel.S MIPS: Fix typos 2024-01-08 10:39:12 +01:00
reset.c mips: Use do_kernel_power_off() 2022-05-19 19:30:31 +02:00
rtlx-mt.c
rtlx.c
scall32-o32.S MIPS: remove asm/war.h 2022-02-22 09:35:49 +01:00
scall64-n32.S MIPS: Fix build error due to PTR used in more places 2022-01-27 09:04:19 +01:00
scall64-n64.S MIPS: remove asm/war.h 2022-02-22 09:35:49 +01:00
scall64-o32.S MIPS: Fix build error due to PTR used in more places 2022-01-27 09:04:19 +01:00
segment.c mips: kernel: convert to DEFINE_SHOW_ATTRIBUTE 2022-09-19 16:40:17 +02:00
setup.c Just cleanups and fixes 2024-01-17 11:20:50 -08:00
signal-common.h mips: signal: move sigcontext declarations to header 2023-12-10 17:21:39 -08:00
signal.c Just cleanups and fixes 2024-01-17 11:20:50 -08:00
signal32.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
signal_n32.c mips: signal: move sigcontext declarations to header 2023-12-10 17:21:39 -08:00
signal_o32.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
smp-bmips.c mips, kexec: fix the incorrect ifdeffery and dependency of CONFIG_KEXEC 2023-12-12 17:20:18 -08:00
smp-cps.c mips, kexec: fix the incorrect ifdeffery and dependency of CONFIG_KEXEC 2023-12-12 17:20:18 -08:00
smp-mt.c MIPS: Rework smt cmdline parameters 2023-06-09 10:34:14 +02:00
smp-up.c
smp.c Quite a lot of kexec work this time around. Many singleton patches in 2024-01-09 11:46:20 -08:00
spinlock_test.c mips: kernel: use DEFINE_DEBUGFS_ATTRIBUTE with debugfs_create_file_unsafe() 2021-03-14 14:09:49 +01:00
spram.c mips: spram: fix missing prototype warning for spram_config 2023-12-10 17:21:41 -08:00
stacktrace.c
sync-r4k.c
syscall.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
sysrq.c tty: sysrq: switch sysrq handlers from int to u8 2023-07-25 19:21:03 +02:00
time.c MIPS: Fix CP0 counter erratum detection for R4k CPUs 2022-04-29 15:52:00 +02:00
topology.c drivers/base/node: consolidate node device subsystem initialization in node_dev_init() 2022-03-22 15:57:10 -07:00
traps.c MIPS: reserve exception vector space ONLY ONCE 2024-01-26 10:33:34 +01:00
unaligned.c mips: add missing declarations for trap handlers 2023-12-10 17:21:38 -08:00
uprobes.c MIPS: uprobes: Restore thread.trap_nr 2023-04-24 13:31:44 +02:00
vdso.c treewide: use get_random_u32_below() instead of deprecated function 2022-11-18 02:15:15 +01:00
vmlinux.lds.S MIPS: Define RUNTIME_DISCARD_EXIT in LD script 2023-04-21 23:59:43 +02:00
vpe-mt.c drivers: remove struct module * setting from struct class 2023-03-17 15:16:27 +01:00
vpe.c MIPS: Fix typos 2024-01-08 10:39:12 +01:00
watch.c