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

blk-cgroup: save IRQ state in blkg_tryget_closest()

bio_set_dev() associates the bio with a blkg through bio_associate_blkg().
If the blkg lookup misses, blkg_tryget_closest() takes q->queue_lock with
spin_lock_irq() and releases it with spin_unlock_irq(), which
unconditionally enables local interrupts.

Callers may call bio_set_dev() with interrupts already disabled, e.g.
dm-thin's pool_map() does so while holding pool->lock taken with
spin_lock_irq(). The nested spin_unlock_irq() then enables interrupts
while pool->lock is still held, so an I/O completion softirq can run on
the same CPU, re-acquire pool->lock (thin_endio(), or overwrite_endio()
-> complete_mapping_preparation()) and deadlock. lockdep reports this
as inconsistent SOFTIRQ-ON-W to IN-SOFTIRQ-W usage.

Commit 3a762de55b4e ("block: save irq state in blkg_lookup_create()")
fixed the same problem while the lock lived in blkg_lookup_create(), but
commit 9327a865e395 ("blk-cgroup: don't nest queue_lock under rcu in
blkg_lookup_create()") moved the locking into blkg_tryget_closest() and
reverted it to spin_lock_irq().

Save and restore the caller's IRQ state instead.
Published: 2026-10-18
Score: 4.7 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Localized denial of service via kernel deadlock
Action: Apply patch
AI Analysis

Impact

The vulnerability arises when the kernel incorrectly restores the IRQ state inside the block‑group lookup routine. When a caller has already disabled interrupts and the function takes a lock with spin_lock_irq(), the nested use of spin_unlock_irq() re‑enables interrupts while the lock is still held. This allows an I/O completion softirq to run on the same CPU, reacquire the lock, and eventually deadlock. The flaw creates a block‑level deadlock that can halt kernel operations and freeze the system, effectively crashing services that rely on block I/O.

Affected Systems

All Linux kernel releases that contain the blkg_tryget_closest() routine as described are vulnerable. No specific kernel versions were named, so any installation of the Linux kernel that uses blk‑cgroup without the fix is potentially affected.

Risk and Exploitability

The fault can be exploited by code executing with kernel privileges, either from local userland with elevated rights or from a compromised kernel module. Because the issue is a timing and interrupt handling bug, it does not require network interaction. The impact is a kernel deadlock leading to denial of service. The CVSS score of 4.7 indicates a moderate severity, and the EPSS score of < 1% shows low likelihood of exploitation. The vulnerability is not listed in CISA KEV, but the presence of a kernel deadlock is a serious weakness.

Generated by OpenCVE AI on October 24, 2026 at 03:25 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the latest kernel patch that restores the caller’s IRQ state in blkg_tryget_closest()
  • Upgrade the Linux kernel to a version that incorporates the fixes for commits 3a762de55b4e and 9327a865e395
  • Reboot the system after patching to ensure all stale interrupts and locks are cleared

Generated by OpenCVE AI on October 24, 2026 at 03:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 24 Oct 2026 02:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1149

Sat, 24 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-833
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.7, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Sun, 18 Oct 2026 20:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-1149

Sun, 18 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: blk-cgroup: save IRQ state in blkg_tryget_closest() bio_set_dev() associates the bio with a blkg through bio_associate_blkg(). If the blkg lookup misses, blkg_tryget_closest() takes q->queue_lock with spin_lock_irq() and releases it with spin_unlock_irq(), which unconditionally enables local interrupts. Callers may call bio_set_dev() with interrupts already disabled, e.g. dm-thin's pool_map() does so while holding pool->lock taken with spin_lock_irq(). The nested spin_unlock_irq() then enables interrupts while pool->lock is still held, so an I/O completion softirq can run on the same CPU, re-acquire pool->lock (thin_endio(), or overwrite_endio() -> complete_mapping_preparation()) and deadlock. lockdep reports this as inconsistent SOFTIRQ-ON-W to IN-SOFTIRQ-W usage. Commit 3a762de55b4e ("block: save irq state in blkg_lookup_create()") fixed the same problem while the lock lived in blkg_lookup_create(), but commit 9327a865e395 ("blk-cgroup: don't nest queue_lock under rcu in blkg_lookup_create()") moved the locking into blkg_tryget_closest() and reverted it to spin_lock_irq(). Save and restore the caller's IRQ state instead.
Title blk-cgroup: save IRQ state in blkg_tryget_closest()
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-10-19T09:26:24.782Z

Reserved: 2026-09-25T10:25:14.372Z

Link: CVE-2026-98832

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-18T16:17:37.443

Modified: 2026-10-19T10:19:47.233

Link: CVE-2026-98832

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-18T00:00:00Z

Links: CVE-2026-98832 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-24T03:30:15Z

Weaknesses