CVE-2026-90004: mm/damon/core: handle region split failure in apply_min_nr_regions()

Published Sep 16, 2026
·
Updated

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

mm/damon/core: handle region split failure in applyminnrregions()

damonapplyminnrregions() repeatedly split each region until its size becomes small enough to meet the user-defined low limit of the number of regions. The loop assumes the split operation (damonsplitregionat()) will always succeed and create the new region. But the operation could silently fail for memory allocation failures, for example.

If such failure happens and the region was the last region, the linked list-based next region fetching returns invalid pointer. As a result, invalid memory dereference and corruption could happen. Even if the corner case is handled, it imposes stress to the allocator by trying split regions for other targets. Fix the issue by breaking all the loops for any region split failure.

This means there could be a minnrregions violation. It will only rarely happen since the allocation is arguably too small to fail. Even if it happens, it is only temporal. damonapplyminnrregions() will be called again after the aggregation interval.

The user impact of the issue should be minor, since the allocation is arguably too small to fail. But, it could still theoretically happen, and the consequence is very bad.

This issue was discovered [1] by Sashiko.

Event History

Sep 16, 2026
CVE Published
via MITRE·10:33 AM
Data Sourced
via MITRE·10:33 AM
Description

Frequently Asked Questions

1

Under what condition can the failure occur?

The issue requires damon_apply_min_nr_regions() to split regions while enforcing a user-defined minimum region count, followed by a region-split failure such as a memory-allocation failure. The unsafe path occurs when the failed split involves the last region, causing next-region retrieval from the linked list to return an invalid pointer.

2

What is the impact if the condition is reached?

A failed split can lead to invalid memory dereference and memory corruption. Continued attempts to split regions for other targets can also place additional stress on the allocator.

3

What behavior changes after the fix?

The fix stops all relevant loops when any region split fails. In that situation, the configured minimum number of regions may temporarily not be met, but the operation is retried after the next aggregation interval.

4

Is the minimum-region limit permanently lost if a split fails?

No. A split failure can cause a temporary min_nr_regions violation, and damon_apply_min_nr_regions() is called again after the aggregation interval. The description notes that the allocation involved is arguably too small to fail, so this condition should be rare.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203