CVE-2026-46290: x86/efi: Fix graceful fault handling after FPU softirq changes

Published Jun 8, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

x86/efi: Fix graceful fault handling after FPU softirq changes

Since commit d02198550423 ("x86/fpu: Improve crypto performance by making kernel-mode FPU reliably usable in softirqs"), kernelfpubegin() calls fpregslock() which uses localbhdisable() instead of the previous preemptdisable(). This sets SOFTIRQOFFSET in preemptcount during the entire EFI runtime service call, causing ininterrupt() to return true in normal task context.

The graceful page fault handler eficrashgracefullyonpagefault() uses ininterrupt() to bail out for faults in real interrupt context. With SOFTIRQOFFSET now set, the handler always bails out, leaving EFI firmware page faults unhandled. This escalates to die() which also sees ininterrupt() as true and calls panic("Fatal exception in interrupt"), resulting in a hard system freeze. On systems with buggy firmware that triggers page faults during EFI runtime calls (e.g., accessing unmapped memory in GetTime()), this causes an unrecoverable hang instead of the expected graceful EFIABORTED recovery.

Fix by replacing ininterrupt() with !intask(). This preserves the original intent of bailing for interrupts or NMI faults, while no longer falsely triggering from the FPU code path's localbhdisable().

[ardb: Sashiko spotted that using 'inhardirq() || innmi()' leaves a window where a softirq may be taken before fpregslock() is called, but after efirtswork.efirtsid has been assigned, and any page faults occurring in that window will then be misidentified as having been caused by the firmware. Instead, use !intask(), which incorporates inservingsoftirq(). ]

Affected Software

5 affected components
Linux Linux kernel (x86/efi)
Linux Linux kernel>=6.15<6.18.30
Linux Linux kernel>=6.19<7.0.7
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade x86/efi to a version that resolves this vulnerability.

    Patch Fix graceful fault handling after FPU softirq changes
  2. Configuration

    Update the kernel code path so the graceful fault handling logic uses '!in_task()' instead of 'in_interrupt()' (per the statement: "Fix by replacing in_interrupt() with !in_task().").

    Linux kernel Replace in_interrupt() with !in_task() in graceful fault handling = !in_task()

Event History

Jun 8, 2026
CVE Published
via MITRE·03:46 PM
Data Sourced
via MITRE·03:46 PM
Description
Data Sourced
via NVD·05:16 PM
RemedyDescriptionSeverityAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-46290?

CVE-2026-46290 has a risk rating of 17, indicating a significant vulnerability that requires prompt attention.

2

How do I fix CVE-2026-46290?

To fix CVE-2026-46290, update the Linux kernel to the latest version that includes the patch addressing the graceful fault handling after FPU softirq changes.

3

What systems are affected by CVE-2026-46290?

CVE-2026-46290 affects systems running the Linux kernel with x86/efi architecture.

4

What are the potential impacts of CVE-2026-46290?

CVE-2026-46290 can lead to unstable system behavior due to improper fault handling in the kernel's FPU softirq management.

5

When was CVE-2026-46290 published?

CVE-2026-46290 was published on June 8, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203