CVEvulnerability
CVE-2026-98094
5.5 MEDIUM
Official page ↗
- Status
- Analyzed
- Published
- 2026-09-25
- Last modified
- 2026-10-23
- Assigner
- 416baaa9-dc9f-4396-8d5f-8c081fb06d67
- CVSS 3.1 ([email protected])
- 5.5 MEDIUM — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-667
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.
Affected configurations
• linux linux kernel (>= 4.0 < 5.10.271)
• linux linux kernel (>= 5.11 < 5.15.222)
• linux linux kernel (>= 5.16 < 6.1.189)
• linux linux kernel (>= 6.2 < 6.6.158)
• linux linux kernel (>= 6.7 < 6.12.111)
• linux linux kernel (>= 6.13 < 6.18.53)
• linux linux kernel (>= 6.19 < 7.2.7)
• linux linux kernel 7.3
Related
Weakness · CWE (1)
- CWE-667 Improper Locking weakness
References
- https://git.kernel.org/stable/c/0843298b159599ee7bc6d14800efdb4bc7349706 Patch
- https://git.kernel.org/stable/c/10cc145b873670438d3b105133dffdae70822db6 Patch
- https://git.kernel.org/stable/c/2a609e29efbba79f9abd68c4ec8a2bd7ecf291e7 Patch
- https://git.kernel.org/stable/c/a323066337ed85c38decfc7f6bbf42f27605dff1 Patch
- https://git.kernel.org/stable/c/dcb48fde8003492256dee45815144aa5ed26ce7c Patch
- https://git.kernel.org/stable/c/f0c869df2c33793c8828acaab3e4a5e0176f9f00 Patch
- https://git.kernel.org/stable/c/f2451e18826eb6a33ea51419f39bdd2eb99fa1ea Patch
- https://git.kernel.org/stable/c/f576944a59f31bcffff121117ebf452c5dd162b7 Patch