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

Сводка

по VulDB • 12.09.2026

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

mm/migrate: отчет о состояниях покоя RCU-tasks в migrate_pages_batch()

Функция migrate_pages_batch() размапировывает (unmaps) каждый folio перед его перемещением, и каждое размапирование запускает колбэки инвалидации mmu_notifier. На хостах KVM функция try_to_migrate() попадает в kvm_mmu_notifier_invalidate_range_start() -> tdp_mmu_zap_leafs(), что является дорогостоящей операцией; поэтому размапирование большого пакета (batch) надолго загружает процессор.

Цикл уже вызывает cond_resched(), но на ядрах с поддержкой PREEMPTION это не имеет эффекта, и вытеснение по требованию (involuntary preemption) не является состоянием покоя для Tasks-RCU.

Следовательно, длинный пакет никогда не сообщает о состоянии покоя, а задача миграции (например, kcompactd) становится удерживающим элементом (holdout) в контексте Tasks-RCU, блокируя период ожидания завершения операций (grace period) Tasks-RCU на несколько минут; это часто наблюдается во флоте Meta:

INFO: rcu_tasks detected stalls on tasks: 0000000055349ecc: .. nvcsw: 1157401/1157401 holdout: 1 idle_cpu: -1/56 task:kcompactd0 state:R running task Call Trace: tdp_mmu_zap_leafs tdp_mmu_next_root gfn_to_pfn_cache_invalidate_start kvm_mmu_notifier_invalidate_range_start __mmu_notifier_invalidate_range_start try_to_migrate_one try_to_migrate migrate_pages_batch migrate_pages compact_zone compact_node kcompactd kthread

Используйте cond_resched_tasks_rcu_qs(), чтобы состояние покоя сообщалось даже тогда, когда cond_resched() ничего не делает.

Этот вопрос также обсуждался в [1].

If you want to get best quality of vulnerability data, you may have to visit VulDB.

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

Linux

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

11.09.2026

Раскрытие

11.09.2026

Модерация

принято

Вход

VDB-402599

EPSS

0.00000

KEV

Нет

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

Очень низкий

Источники

Do you know our Splunk app?

Download it now for free!