Skip to main content

Linux fbtft driver EUVDEUVD-2026-86924

| CVE-2026-98094 MEDIUM
Improper Locking (CWE-667)
2026-09-25 Linux GHSA-5wg8-22v7-6q2c
5.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Local access to device running fbtft console
  2. Exploit
    printk in hardirq during fbcon render
  3. Execution
    IRQ lock inversion on dirty_lock
  4. Impact
    CPU deadlock / system hang

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Proper locking
Exploitation Conditions

Requires a system where the fbtft staging driver is bound to a small SPI TFT display used as the framebuffer console (fbcon) with deferred I/O enabled, such that fbtft_mkdirty() is reachable from the fbcon rendering path while printk() executes in hardirq context, concurrently with fbtft_deferred_io() taking par->dirty_lock in workqueue context with interrupts enabled. Limiting factors that reduce realistic risk: local-only vector (no remote reachability), the specific and relatively uncommon fbtft TFT-panel hardware/driver must be present and active as the console, and the inversion depends on precise hardirq timing rather than attacker-supplied data - it typically requires CONFIG_PROVE_LOCKING-observable conditions and concurrent console logging to materialize.

Impact

All signals point to this being a low-priority, defensively-relevant stability bug rather than a security emergency. The CVSS vector (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, base 5.5 MEDIUM) describes a local, availability-only impact with no confidentiality or integrity loss - consistent with CWE-667 (improper locking) and the described IRQ lock inversion that can deadlock a CPU. EPSS reinforces low real-world risk at 0.17% (5th percentile), there is no CISA KEV listing (not actively exploited) and no public exploit identified at time of analysis. The vuln.today decision label is 'this_month', i.e. routine patching, not act_now/emergency. One data conflict must be flagged: the input Tags list 'Information Disclosure', but the CVSS vector is explicitly C:N/I:N/A:H and the description is a deadlock/hang - there is no confidentiality impact, so the Information Disclosure tag is mislabeled and should be disregarded. Note also that the input CVSS uses AC:L, yet the described trigger is a timing-dependent hardirq interrupting a CPU holding dirty_lock, which is better characterized as high attack complexity.

Exploit ScenarioDerived

On an embedded/SBC system (e.g. the RK3566 board in the report) using the fbtft staging driver with a small SPI TFT panel as the console, kernel console output (printk) arriving in hardirq context during fbcon rendering can interrupt a CPU that holds par->dirty_lock, producing an IRQ lock-inversion deadlock that hangs the CPU. No public exploit code or PoC reference is provided, and the condition is a concurrency/timing fault rather than an attacker-supplied input, so it is far more likely to manifest as a spontaneous hang under logging load than as a deliberately weaponized attack.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 23, 2026

The Linux kernel's fbtft staging driver can deadlock because dirty_lock is taken in workqueue context with interrupts enabled while fbtft_mkdirty() is reachable from the fbcon rendering path during printk() in hardirq context, creating a lock inversion with console_owner. Affected systems are those using a small SPI TFT display bound to fbtft as the framebuffer console with deferred I/O; the flaw is local, timing-dependent, and not remotely reachable. Vendor fixes are available in Linux 6.12.111, 6.18.53, 7.2.7, and 7.3-rc2; no public exploit identified at time of analysis, and EPSS is 0.17%.

RemediationAI

Apply the vendor fix by updating to Linux 6.12.111, 6.18.53, 7.2.7, or 7.3-rc2, or by backporting the upstream stable commits 2a609e29efbba79f9abd68c4ec8a2bd7ecf291e7, f576944a59f31bcffff121117ebf452c5dd162b7, dcb48fde8003492256dee45815144aa5ed26ce7c, and f0c869df2c33793c8828acaab3e4a5e0176f9f00 from git.kernel.org; patch status is available from vendor. No vendor-documented workaround is supplied in the references, so the code fix is the complete remediation. If the update must be delayed, the practical compensating control is to avoid using an fbtft-bound SPI TFT as the system framebuffer console or to avoid loading the fbtft driver on systems that do not need it, which removes the fbcon rendering path involved but sacrifices TFT console output; this is not a substitute for the patch and does not address the underlying locking defect.

Affected VersionsENISA

Linux patch: 6.18.53
Linux c296d5f9957c03994a699d6739c27d4581a9f6c7 <2a609e29efbba79f9abd68c4ec8a2bd7ecf291e7
Linux patch: 6.12.111
Linux c296d5f9957c03994a699d6739c27d4581a9f6c7 <f576944a59f31bcffff121117ebf452c5dd162b7
Linux c296d5f9957c03994a699d6739c27d4581a9f6c7 <dcb48fde8003492256dee45815144aa5ed26ce7c
Linux patch: 7.2.7
Linux c296d5f9957c03994a699d6739c27d4581a9f6c7 <f0c869df2c33793c8828acaab3e4a5e0176f9f00
Linux patch: 7.3-rc2
Linux patch: 0
Linux 4.0

Affected Packages

euvd linux no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The fbtft driver is a Linux staging framebuffer driver for small SPI TFT panels. Its framebuffer deferred-I/O path uses par->dirty_lock to protect the dirty line range: fbtft_deferred_io() takes it from workqueue context with local interrupts enabled, while fbtft_mkdirty() can run from fbcon rendering inside printk() in hardirq context. Lockdep reported a possible IRQ lock inversion between dirty_lock and console_owner, because a hardirq can interrupt a CPU holding dirty_lock and re-enter console rendering that tries to take dirty_lock again; the fix makes fbtft_mkdirty() use spin_lock_irqsave() and fbtft_deferred_io() use spin_lock_irq(), keeping IRQ-off regions short. This is CWE-667 improper locking, with local access, high attack complexity, and availability-only impact per the assessed vector; the trigger is a specific hardware/driver-console configuration and hardirq timing, not attacker-supplied data.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 4.7 MEDIUM

Local-only driver bug with no network path (AV:L); the deadlock needs a hardirq to interrupt a CPU holding dirty_lock, a timing-dependent condition (AC:H); impact is a hang, availability-only (A:H, C/I:N).

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

4
CVSS changed
Oct 23, 2026 - 18:52 NVD
5.5 (MEDIUM)
Patch available
Sep 25, 2026 - 11:02 EUVD
CVE Published
Sep 25, 2026 - 10:24 nvd
MEDIUM 5.5
CVE Published
Sep 25, 2026 - 10:24 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Low
Linux staging driver for niche small SPI TFT panels on embedded boards
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

28
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy