]> www.infradead.org Git - users/jedix/linux-maple.git/commit
KVM: x86: Don't take kvm->lock when iterating over vCPUs in suspend notifier
authorSean Christopherson <seanjc@google.com>
Sat, 1 Feb 2025 01:38:17 +0000 (17:38 -0800)
committerSean Christopherson <seanjc@google.com>
Wed, 12 Feb 2025 18:45:54 +0000 (10:45 -0800)
commitd9c5ed0a9b529ee1103a4b68cec86112b26380e0
tree6eb5f09d949bfca2f17266aecf456424787c1efd
parenta64dcfb451e254085a7daee5fe51bf22959d52d3
KVM: x86: Don't take kvm->lock when iterating over vCPUs in suspend notifier

When queueing vCPU PVCLOCK updates in response to SUSPEND or HIBERNATE,
don't take kvm->lock as doing so can trigger a largely theoretical
deadlock, it is perfectly safe to iterate over the xarray of vCPUs without
holding kvm->lock, and kvm->lock doesn't protect kvm_set_guest_paused() in
any way (pv_time.active and pvclock_set_guest_stopped_request are
protected by vcpu->mutex, not kvm->lock).

Reported-by: syzbot+352e553a86e0d75f5120@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/677c0f36.050a0220.3b3668.0014.GAE@google.com
Fixes: 7d62874f69d7 ("kvm: x86: implement KVM PM-notifier")
Reviewed-by: Paul Durrant <paul@xen.org>
Link: https://lore.kernel.org/r/20250201013827.680235-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/x86.c