CVE-2026-64419 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
mm/shrinker: не удерживать блокировку RCU в функции shrinker_debugfs_count_show()
Чтение файла «count» из debugfs для shrinker, aware-мемкг (aware of memory cgroups), может привести к переходу в состояние сна внутри критической секции чтения RCU:
BUG: sleeping function called from invalid context at kernel/cgroup/rstat.c:421 RCU nest depth: 1, expected: 0 css_rstat_flush mem_cgroup_flush_stats zswap_shrinker_count shrinker_debugfs_count_show
Функция shrinker_debugfs_count_show() вызывает обратный вызов ->count_objects() в контексте rcu_read_lock(). Обратный вызов zswap выполняет сброс статистики мемкг через css_rstat_flush(), который может блокироваться (sleep), поэтому он не должен выполняться под защитой RCU.
Блокировка RCU здесь не требуется. Функция mem_cgroup_iter() внутренне использует RCU и возвращает указатель на мемкг с захваченной ссылкой css (которая освобождается при следующей итерации или функцией mem_cgroup_iter_break()), поэтому объект мемкг остается валидным без дополнительной блокировки RCU. Сам shrinker удерживается открытым файлом debugfs: функция shrinker_free() удаляет записи из debugfs через debugfs_remove_recursive(), которая ожидает завершения всех активных читателей, прежде чем вызвать call_rcu(..., shrinker_free_rcu_cb). Близкий обработчик «scan» уже вызывает блокируемый обратный вызов ->scan_objects() без использования секции RCU.
Удалены вызовы rcu_read_lock()/rcu_read_unlock().
If you want to get best quality of vulnerability data, you may have to visit VulDB.