aboutsummaryrefslogtreecommitdiffstats
path: root/net/unix/unix_bpf.c
diff options
context:
space:
mode:
authorEric Biggers <[email protected]>2025-05-18 19:32:12 +0000
committerHerbert Xu <[email protected]>2025-05-26 02:58:50 +0000
commit2297554f01df6d3d4e98a3915c183ce3e491740a (patch)
treee849e3babc0430271434737401fff1f55372de37 /net/unix/unix_bpf.c
parentcrypto: qat - add missing header inclusion (diff)
downloadkernel-2297554f01df6d3d4e98a3915c183ce3e491740a.tar.gz
kernel-2297554f01df6d3d4e98a3915c183ce3e491740a.zip
x86/fpu: Fix irq_fpu_usable() to return false during CPU onlining
irq_fpu_usable() incorrectly returned true before the FPU is initialized. The x86 CPU onlining code can call sha256() to checksum AMD microcode images, before the FPU is initialized. Since sha256() recently gained a kernel-mode FPU optimized code path, a crash occurred in kernel_fpu_begin_mask() during hotplug CPU onlining. (The crash did not occur during boot-time CPU onlining, since the optimized sha256() code is not enabled until subsys_initcalls run.) Fix this by making irq_fpu_usable() return false before fpu__init_cpu() has run. To do this without adding any additional overhead to irq_fpu_usable(), replace the existing per-CPU bool in_kernel_fpu with kernel_fpu_allowed which tracks both initialization and usage rather than just usage. The initial state is false; FPU initialization sets it to true; kernel-mode FPU sections toggle it to false and then back to true; and CPU offlining restores it to the initial state of false. Fixes: 11d7956d526f ("crypto: x86/sha256 - implement library instead of shash") Reported-by: Ayush Jain <[email protected]> Closes: https://lore.kernel.org/r/20250516112217.GBaCcf6Yoc6LkIIryP@fat_crate.local Signed-off-by: Eric Biggers <[email protected]> Tested-by: Ayush Jain <[email protected]> Reviewed-by: Thomas Gleixner <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
Diffstat (limited to 'net/unix/unix_bpf.c')
0 files changed, 0 insertions, 0 deletions