PT-2026-90472 · Linux · Linux

CVE-2026-89756

·

Published

2026-09-11

·

Updated

2026-09-11

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
mm/migrate: report RCU-tasks quiescent states in migrate pages batch()
migrate pages batch() unmaps each folio before moving it, and every unmap runs the mmu notifier invalidate callbacks. On KVM hosts try to migrate() ends up in kvm mmu notifier invalidate range start() -> tdp mmu zap leafs(), which is expensive, so unmapping a large batch keeps the CPU busy for a long time.
The loop already calls cond resched(), but on PREEMPTION kernels that is a no-op, and involuntary preemption is not a Tasks-RCU quiescent state.
A long batch therefore never reports a quiescent state, and the migrating task (e.g. kcompactd) becomes a Tasks-RCU holdout, stalling the Tasks-RCU grace period for minutes, which is common at Meta fleet:
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
Use cond resched tasks rcu qs() so a quiescent state is reported even when cond resched() does nothing.
This has also been discussed at [1]
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-89756

Affected Products

Linux