CVE-2026-89796 in LinuxИнформация

Сводка

по VulDB • 17.09.2026

В ядре Linux была устранена следующая уязвимость:

mm/damon/core: предотвращение бесконечного внутреннего цикла в функции kdamond_merge_regions()

Серия патчей «mm/damon: не срочные исправления для устранения бесконечных циклов, разыменования NULL и состояний гонки (races)», версия 1.1.

Sashiko обнаружил несколько проблем в DAMON, которые могли приводить к бесконечным циклам, разыменованию указателя со значением NULL и ухудшению результатов мониторинга. Первые две проблемы звучат пугающе, однако бесконечный цикл возникает только при нереалистичной настройке пользователем. Разыменование NULL происходит исключительно в модульных тестах (unit test). Ухудшение результатов мониторинга является незначительным, поскольку оно носит характер «best-effort» и вызывается лишь редкими состояниями гонки (races). Тем не менее, это ошибки, которые следует исправить при возможности. Исправляем их.

Этот патч (из 6):

Из-за обновления параметров в режиме онлайн, такого как события, количество регионов DAMON может превысить установленный пользователем верхний предел. Функция kdamond_merge_regions() повторяет слияние регионов до тех пор, пока их число не достигнет заданного предела, одновременно удваивая порог (threshold) слияния вплоть до теоретического максимального порога. Это делается только до достижения теоретического максимума, поскольку даже агрессивное слияние может не привести к уменьшению количества регионов ниже установленного пользователем верхнего предела. Например, могут существовать многие определенные пользователем несмежные регионы (non-contiguous regions), которые невозможно объединить.

Условие выхода из цикла на основе порога оценивается путем сравнения порога для следующей попытки слияния с теоретическим максимальным порогом. Если max_thres больше, чем UINT_MAX / 2, удвоение порога может привести к переполнению (overflow) и обходу условия выхода из цикла. В этом случае, если количество регионов не удается уменьшить ниже верхнего предела, как описано выше, цикл будет выполняться бесконечно.

Предотвращаем этот случай путем проверки условия выхода перед удвоением порога. Также предотвращаем превышение порогом максимального значения, так как это может привести к переполнению и применению неверного порога слияния.

Эта проблема маловероятна в реальных условиях эксплуатации, поскольку наличие max_thres выше UINT_MAX / 2 требует нереалистично больших интервалов агрегации по сравнению с интервалами выборки (sampling interval). Кроме того, это требует нереалистично большого количества несмежных регионов. Тем не менее, последствия серьезны, а исправление простое.

Проблема была обнаружена [1] Sashiko.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

11.09.2026

Раскрытие

16.09.2026

Модерация

принято

Вход

VDB-405613

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!