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

mm/damon/core: avoid infinite kdamond_merge_regions() internal loop

Patch series "mm/damon: unurgent fixes for infinite loop, NULL de-ref and
races", v1.1.

Sashiko found a few issues in DAMON that could cause infinite loop, NULL
dereference and monitoring results degradation. The first two sounds
scary but the infinite loop happens only under unreasonable user setup.
The NULL dereference is only in a unit test. Monitoring results
degradation is trivial since it is only best-effort, and those happens
from only unlikely races. Still those are bugs that better to fix if
possible. Fix those.


This patch (of 6):

Due to online parameter update like events, the number of DAMON regions
could be higher than the user-set upper limit. kdamond_merge_regions()
repeats merge regions until the number meets the limit, while doubling the
merge threshold up to the theoretical maximum threshold. It is tried only
up to the theoretical maximum threshold because even the aggressive
merging can fail from reducing the number of regions under the
user-defined upper limit. For example, there could be many user-defined
non-contiguous regions that cannot be merged.

The threshold based loop break condition is evaluated by comparing the
threshold for the next merging try against the theoretical maximum
threshold. If max_thres is larger than UINT_MAX / 2, doubling the
threshold could make it overflow, and bypass the loop break condition. In
the case, if the number of regions cannot be reduced under the upper limit
like explained above, the loop will run infinitely.

Prevent the case by doing the break condition check before doubling the
threshold. Also, prevent the threshold exceeding the maximum threshold,
as it could overflow and apply the wrong merge threshold.

This issue is unlikely to occur in real world, since having the max_thres
higher than UINT_MAX / 2 require unrealistically large aggregation
intervals compared to the sampling interval. Also, it requires an
unrealistically large number of uncontiguous regions setup. Nonetheless,
the consequence is bad and the fix is simple.

The issue was discovered [1] by Sashiko.
Published: 2026-09-16
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via infinite loop
Action: Apply patch
AI Analysis

Impact

The vulnerability resides in the DAMON component of the Linux kernel. A flaw in the kdamond_merge_regions() routine can cause an infinite loop when the number of monitored regions exceeds the user‑defined upper limit and the internal merge threshold is forced beyond the theoretical maximum. This loop drains CPU resources and can render the kernel unresponsive, effectively a denial‑of‑service condition. The additional null‑pointer dereference mentioned in the patch applies only to a unit test and does not affect a production build, while any degradation in monitoring results is trivial best‑effort damage.

Affected Systems

This bug is present in all releases of the Linux kernel that include the DAMON memory‑monitoring infrastructure, without a specific version range listed. All Linux kernel builds that rely on DAMON are potentially affected until the patch is applied.

Risk and Exploitability

The EPSS score is less than 1% and the vulnerability is not listed in CISA’s KEV catalogue, indicating a very low probability of widespread exploitation. The attack is highly contingent on an attacker configuring DAMON with exotic parameters—unrealistically large aggregation intervals and a huge number of non‑contiguous regions—which is unlikely to happen in a typical deployment. Consequently, the risk to most installations is modest, but the impact of the infinite loop could be severe if the specific conditions are met.

Generated by OpenCVE AI on September 18, 2026 at 09:22 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the Linux kernel to a version that includes the v1.1 patch series for DAMON.
  • Rebuild and install the updated kernel, then reboot to apply the change.
  • If delaying a kernel upgrade, avoid configuring DAMON with aggregation intervals that would force thresholds beyond UINT_MAX/2 and minimize the number of non‑contiguous regions, though this is only a temporary measure.

Generated by OpenCVE AI on September 18, 2026 at 09:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4817-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Sat, 03 Oct 2026 11:15:00 +0000


Mon, 21 Sep 2026 13:30:00 +0000


Fri, 18 Sep 2026 09:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476
CWE-674

Wed, 16 Sep 2026 10:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: mm/damon/core: avoid infinite kdamond_merge_regions() internal loop Patch series "mm/damon: unurgent fixes for infinite loop, NULL de-ref and races", v1.1. Sashiko found a few issues in DAMON that could cause infinite loop, NULL dereference and monitoring results degradation. The first two sounds scary but the infinite loop happens only under unreasonable user setup. The NULL dereference is only in a unit test. Monitoring results degradation is trivial since it is only best-effort, and those happens from only unlikely races. Still those are bugs that better to fix if possible. Fix those. This patch (of 6): Due to online parameter update like events, the number of DAMON regions could be higher than the user-set upper limit. kdamond_merge_regions() repeats merge regions until the number meets the limit, while doubling the merge threshold up to the theoretical maximum threshold. It is tried only up to the theoretical maximum threshold because even the aggressive merging can fail from reducing the number of regions under the user-defined upper limit. For example, there could be many user-defined non-contiguous regions that cannot be merged. The threshold based loop break condition is evaluated by comparing the threshold for the next merging try against the theoretical maximum threshold. If max_thres is larger than UINT_MAX / 2, doubling the threshold could make it overflow, and bypass the loop break condition. In the case, if the number of regions cannot be reduced under the upper limit like explained above, the loop will run infinitely. Prevent the case by doing the break condition check before doubling the threshold. Also, prevent the threshold exceeding the maximum threshold, as it could overflow and apply the wrong merge threshold. This issue is unlikely to occur in real world, since having the max_thres higher than UINT_MAX / 2 require unrealistically large aggregation intervals compared to the sampling interval. Also, it requires an unrealistically large number of uncontiguous regions setup. Nonetheless, the consequence is bad and the fix is simple. The issue was discovered [1] by Sashiko.
Title mm/damon/core: avoid infinite kdamond_merge_regions() internal loop
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-03T10:56:40.126Z

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

Link: CVE-2026-89796

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-16T11:16:44.423

Modified: 2026-10-03T11:17:43.597

Link: CVE-2026-89796

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-18T09:30:06Z

Weaknesses