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

staging: fbtft: make dirty_lock IRQ-safe

fbtft_mkdirty() can be reached from the fbcon rendering path while
processing printk() in hardirq context. Meanwhile, dirty_lock is also
taken by fbtft_deferred_io() in workqueue context with local interrupts
enabled.

Lockdep reports a possible IRQ lock inversion involving dirty_lock and
console_owner. A hardirq can interrupt a CPU holding dirty_lock and
enter the console rendering path, which can attempt to acquire
dirty_lock again.

The following lockdep report was observed on an RK3566 system with
CONFIG_PROVE_LOCKING enabled:

WARNING: possible irq lock inversion dependency detected
swapper/2/0 just changed the state of lock:
(console_owner){-...}-{0:0}
but this lock took another, HARDIRQ-unsafe lock in the past:
(&par->dirty_lock){+.+.}-{2:2}

CPU0 CPU1
---- ----
lock(&par->dirty_lock);
local_irq_disable();
lock(console_owner);
lock(&par->dirty_lock);
<Interrupt>
lock(console_owner);

*** DEADLOCK ***

Use spin_lock_irqsave() for fbtft_mkdirty() and spin_lock_irq() for
fbtft_deferred_io(). They only access the dirty line range, so the
IRQ-off regions remain short.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Deadlock in Linux kernel could block console rendering and potentially halt the system
Action: Apply patch promptly
AI Analysis

Impact

The vulnerability originates from the fbtft driver in the Linux kernel where the function fbtft_mkdirty() can be invoked during printk processing in a hardirq context. Simultaneously, the dirty_lock used by fbtft_mkdirty() and the console_owner lock used during console rendering can be entered in different orders, creating a lock inversion scenario. If an interrupt occurs while the CPU holds dirty_lock, the interrupt handler may attempt to acquire console_owner and then dirty_lock again. This sequence can trigger a deadlock that prevents further console output or other kernel activities, effectively leading to a denial-of-service condition. Lockdep reports indicate that this situation can materialize, especially on systems with CONFIG_PROVE_LOCKING enabled.

Affected Systems

The flaw is present in all versions of the Linux kernel that include the fbtft driver and the associated locking logic, regardless of distribution. The lock inversion was confirmed on an RK3566 platform, suggesting that any kernel rendering the same staging driver on ARM or similar architectures may be affected. Broadly, any installation that loads the fbtft driver and uses printk in a hardirq context is potentially impacted.

Risk and Exploitability

The risk is primarily a denial-of-service through a deadlock; there are no known remote exploit vectors. EPSS data is unavailable and the vulnerability is not listed in CISA’s KEV catalog, indicating that active exploitation has not been observed. An attacker would need to trigger the specific rendering condition, typically by generating console output during a hardirq, which may require privileged or local access to the system. The seriousness stems from the potential to halt console output, hindering troubleshooting and potentially crashing critical processes if the deadlock propagates.

Generated by OpenCVE AI on September 25, 2026 at 16:06 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel patch that replaces fbtft_mkdirty() with spin_lock_irqsave() and fbtft_deferred_io() with spin_lock_irq() to eliminate the IRQ‑unsafe lock usage
  • If patching is not immediately possible, temporarily disable the fbtft driver (e.g., via module unload or kernel configuration) or the hardware console that requires printk during hardirq contexts to avoid the deadlock
  • Update kernel configuration to disable CONFIG_PROVE_LOCKING if lockdep checks are unnecessary, but note that this does not fix the underlying issue; it only suppresses the detection of the inversion

Generated by OpenCVE AI on September 25, 2026 at 16:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1345
CWE-367

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: staging: fbtft: make dirty_lock IRQ-safe fbtft_mkdirty() can be reached from the fbcon rendering path while processing printk() in hardirq context. Meanwhile, dirty_lock is also taken by fbtft_deferred_io() in workqueue context with local interrupts enabled. Lockdep reports a possible IRQ lock inversion involving dirty_lock and console_owner. A hardirq can interrupt a CPU holding dirty_lock and enter the console rendering path, which can attempt to acquire dirty_lock again. The following lockdep report was observed on an RK3566 system with CONFIG_PROVE_LOCKING enabled: WARNING: possible irq lock inversion dependency detected swapper/2/0 just changed the state of lock: (console_owner){-...}-{0:0} but this lock took another, HARDIRQ-unsafe lock in the past: (&par->dirty_lock){+.+.}-{2:2} CPU0 CPU1 ---- ---- lock(&par->dirty_lock); local_irq_disable(); lock(console_owner); lock(&par->dirty_lock); <Interrupt> lock(console_owner); *** DEADLOCK *** Use spin_lock_irqsave() for fbtft_mkdirty() and spin_lock_irq() for fbtft_deferred_io(). They only access the dirty line range, so the IRQ-off regions remain short.
Title staging: fbtft: make dirty_lock IRQ-safe
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T10:24:25.889Z

Reserved: 2026-09-25T10:19:56.076Z

Link: CVE-2026-98094

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:39.133

Modified: 2026-09-25T11:17:39.133

Link: CVE-2026-98094

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T16:15:16Z

Weaknesses