Linux kernel CVE announcements
 help / color / mirror / Atom feed
* CVE-2026-46290: x86/efi: Fix graceful fault handling after FPU softirq changes
@ 2026-06-08 15:45 Greg Kroah-Hartman
  0 siblings, 0 replies; only message in thread
From: Greg Kroah-Hartman @ 2026-06-08 15:45 UTC (permalink / raw)
  To: linux-cve-announce; +Cc: Greg Kroah-Hartman

From: Greg Kroah-Hartman <gregkh@kernel.org>

Description
===========

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"), kernel_fpu_begin()
calls fpregs_lock() which uses local_bh_disable() instead of the
previous preempt_disable(). This sets SOFTIRQ_OFFSET in preempt_count
during the entire EFI runtime service call, causing in_interrupt() to
return true in normal task context.

The graceful page fault handler efi_crash_gracefully_on_page_fault()
uses in_interrupt() to bail out for faults in real interrupt context.
With SOFTIRQ_OFFSET now set, the handler always bails out, leaving EFI
firmware page faults unhandled. This escalates to die() which also sees
in_interrupt() 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 EFI_ABORTED recovery.

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

[ardb: Sashiko spotted that using 'in_hardirq() || in_nmi()' leaves a
       window where a softirq may be taken before fpregs_lock() is
       called, but after efi_rts_work.efi_rts_id has been assigned,
       and any page faults occurring in that window will then be
       misidentified as having been caused by the firmware. Instead,
       use !in_task(), which incorporates in_serving_softirq(). ]

The Linux kernel CVE team has assigned CVE-2026-46290 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 6.15 with commit d02198550423a0b695e7a24ec77153209ad45b09 and fixed in 6.18.30 with commit 22b365ba1af3d8c6036b8e5112fffe80998b85a0
	Issue introduced in 6.15 with commit d02198550423a0b695e7a24ec77153209ad45b09 and fixed in 7.0.7 with commit db155b86d1523e85941f61efd7d7ffb594cc9a29
	Issue introduced in 6.15 with commit d02198550423a0b695e7a24ec77153209ad45b09 and fixed in 7.1-rc3 with commit 088f65e206087bf903743bd18417261d7a4c9644

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-46290
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	arch/x86/platform/efi/quirks.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/22b365ba1af3d8c6036b8e5112fffe80998b85a0
	https://git.kernel.org/stable/c/db155b86d1523e85941f61efd7d7ffb594cc9a29
	https://git.kernel.org/stable/c/088f65e206087bf903743bd18417261d7a4c9644

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-08 15:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-08 15:45 CVE-2026-46290: x86/efi: Fix graceful fault handling after FPU softirq changes Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox