CVE-2026-89756 in Linux
Résumé
par VulDB • 12/09/2026
Dans le noyau Linux, la vulnérabilité suivante a été corrigée :
mm/migrate : signaler les états de repos (quiescent states) RCU-tasks dans migrate_pages_batch()
migrate_pages_batch() décartographie chaque folio avant de le déplacer, et chaque opération d'unmap déclenche les rappels d'invalidation des mmu_notifier. Sur les hôtes KVM, try_to_migrate() aboutit à kvm_mmu_notifier_invalidate_range_start() -> tdp_mmu_zap_leafs(), ce qui est coûteux ; ainsi, le décartographie d'un grand lot maintient le CPU occupé pendant une longue période.
La boucle appelle déjà cond_resched(), mais sur les noyaux PREEMPTION, cela n'a aucun effet (no-op), et la préemption involontaire ne constitue pas un état de repos pour Tasks-RCU.
Un long lot ne signale donc jamais d'état de repos, et la tâche en cours de migration (par exemple kcompactd) devient un point bloquant pour Tasks-RCU, paralysant la période de grâce Tasks-RCU pendant plusieurs minutes, ce qui est courant sur le parc Meta :
INFO: rcu_tasks a détecté des blocages sur les tâches : 0000000055349ecc: .. nvcsw: 1157401/1157401 holdout: 1 idle_cpu: -1/56 task:kcompactd0 state:R running task Trace d'appel : 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
Utilisez cond_resched_tasks_rcu_qs() afin qu'un état de repos soit signalé même lorsque cond_resched() ne fait rien.
Cela a également été discuté dans [1]
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.