What’s Vulnerable › Vulnerabilities
CVE-2021-47226: x86/fpu: Invalidate FPU state after a failed XRSTOR from a user buffer
- Severity: high (CVSS 7.1 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.2% probability of exploitation in the next 30 days
- Public exploit or detection template: none known
- Published: 2024-05-21 · updated 2026-08-04
- Weakness: CWE-203
Description
In the Linux kernel, the following vulnerability has been resolved: x86/fpu: Invalidate FPU state after a failed XRSTOR from a user buffer Both Intel and AMD consider it to be architecturally valid for XRSTOR to fail with #PF but nonetheless change the register state. The actual conditions under which this might occur are unclear [1], but it seems plausible that this might be triggered if one sibling thread unmaps a page and invalidates the shared TLB while another sibling thread is executing XRSTOR on the page in question. __fpu__restore_sig() can execute XRSTOR while the hardware registers are preserved on behalf of a different victim task (using the fpu_fpregs_owner_ctx mechanism), and, in theory, XRSTOR could fail but modify the registers. If this happens, then there is a window in which __fpu__restore_sig() could schedule out and the victim task could schedule back in without reloading its own FPU registers. This would result in part of the FPU state that __fpu__restore_sig() was attempting to load leaking into the victim task's user-visible state. Invalidate preserved FPU registers on XRSTOR failure to prevent this situation from corrupting any state. [1] Frequent readers of the errata lists might imagine "complex microarchitectural conditions".
Affected products
- Linux kernel: from 5.2 before 5.10.46; from 5.11 before 5.12.13; 5.13-rc1, 5.13-rc2, 5.13-rc3, 5.13-rc4, 5.13-rc5, 5.13-rc6 — fixed in 5.10.46, 5.12.13
How to fix
Upgrade to a fixed version: Linux kernel 5.10.46, 5.12.13. Check the vendor advisory for mitigations.
References
- https://git.kernel.org/stable/c/002665dcba4bbec8c82f0aeb4bd3f44334ed2c14
- https://git.kernel.org/stable/c/a7748e021b9fb7739e3cb88449296539de0b6817
- https://git.kernel.org/stable/c/d8778e393afa421f1f117471144f8ce6deb6953a
- https://git.kernel.org/stable/c/002665dcba4bbec8c82f0aeb4bd3f44334ed2c14
- https://git.kernel.org/stable/c/a7748e021b9fb7739e3cb88449296539de0b6817
- https://git.kernel.org/stable/c/d8778e393afa421f1f117471144f8ce6deb6953a
Get alerted when CVE-2021-47226 or the next vulnerability affects your stack