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

blk-iocost: clear delay state when freeing policy data

iocg_kick_delay() turns sufficiently large debt into an explicit
block-cgroup delay with blkcg_set_delay(), setting blkg->use_delay to
-1 and incrementing blkcg->congestion_count. Clearing it again depends
on iocg_kick_delay() running from the period timer, the waitq timer or
the issue path.

ioc_pd_free() removes the iocg from active_iocgs and cancels its waitq
timer, and no further bios can arrive, so once it has run nothing is
left which can reduce the debt and clear the delay. The blkcg stays
marked congested for the rest of its life.

blk_cgroup_congested() then returns true for every task in that cgroup
and its descendants: page_cache_sync_ra() cuts readahead to a single
page, page_cache_async_ra() skips it altogether, and
__folio_throttle_swaprate() takes swap_avail_lock and schedules a
throttle on anonymous folio allocation.

Clear it explicitly, after the list removal and the synchronous
hrtimer_cancel() so that neither timer processing nor an I/O path can
re-arm it. The free callback can also see policy data which was never
attached to a blkg, hence the pd->blkg check.
Published: 2026-09-17
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service (resource starvation due to unchanged block‑cgroup congestion state)
Action: Patch
AI Analysis

Impact

In the Linux kernel, a state‑management flaw in the blk‑iocost subsystem prevents the block‑cgroup delay flag from being cleared when a policy object is freed. As a result, the block‑cgroup remains marked congested for its entire life, causing the kernel to treat every task in that cgroup as congested. This leads to throttled read‑ahead, suppressed asynchronous pre‑reads, and reduced swap activity on anonymous pages, effectively starving I/O resources and potentially causing application stalls or denial of data access.

Affected Systems

The vulnerability affects the Linux kernel on all architectures that implement the blk‑iocost block‑cgroup subsystem. Kernel releases that do not include the patch commit 97cb95d2148835ae86ff916b145aef332d40439d are vulnerable; administrators should verify whether their running kernel predates this commit.

Risk and Exploitability

The CVSS score is unspecified, but the EPSS score is less than 1 %, indicating a low probability of widespread exploitation. Attackers would need the capability to create or manipulate block‑cgroup policies that trigger debt and subsequent removal, which typically requires kernel–module or privileged code execution. The vulnerability is not listed in the CISA KEV catalog. If exploited, the denial‑of‑service effect could degrade system performance over a prolonged period.

Generated by OpenCVE AI on September 20, 2026 at 02:12 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the kernel to a version that includes commit 97cb95d2148835ae86ff916b145aef332d40439d
  • If immediate kernel upgrade is not possible, temporarily disable block‑cgroup delay features by adjusting appropriate kernel parameters or configuration settings to avoid congestion flag manipulation
  • Monitor system I/O performance and block‑cgroup congestion state for irregular behavior

Generated by OpenCVE AI on September 20, 2026 at 02:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 20 Sep 2026 02:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-682

Thu, 17 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: blk-iocost: clear delay state when freeing policy data iocg_kick_delay() turns sufficiently large debt into an explicit block-cgroup delay with blkcg_set_delay(), setting blkg->use_delay to -1 and incrementing blkcg->congestion_count. Clearing it again depends on iocg_kick_delay() running from the period timer, the waitq timer or the issue path. ioc_pd_free() removes the iocg from active_iocgs and cancels its waitq timer, and no further bios can arrive, so once it has run nothing is left which can reduce the debt and clear the delay. The blkcg stays marked congested for the rest of its life. blk_cgroup_congested() then returns true for every task in that cgroup and its descendants: page_cache_sync_ra() cuts readahead to a single page, page_cache_async_ra() skips it altogether, and __folio_throttle_swaprate() takes swap_avail_lock and schedules a throttle on anonymous folio allocation. Clear it explicitly, after the list removal and the synchronous hrtimer_cancel() so that neither timer processing nor an I/O path can re-arm it. The free callback can also see policy data which was never attached to a blkg, hence the pd->blkg check.
Title blk-iocost: clear delay state when freeing policy data
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-17T16:07:06.388Z

Reserved: 2026-09-11T19:38:34.791Z

Link: CVE-2026-90182

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-17T17:17:12.450

Modified: 2026-09-17T17:17:12.450

Link: CVE-2026-90182

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-20T02:15:17Z

Weaknesses