Patch "KVM: x86: cleanup the page tracking SRCU instance" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: x86: cleanup the page tracking SRCU instance
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-x86-cleanup-the-page-tracking-srcu-instance.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
2beb6dad2e8f95d710159d5befb390e4f62ab5cfMon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Mon, 27 Mar 2017 17:53:50 +0200
Subject: KVM: x86: cleanup the page tracking SRCU instance
From: Paolo Bonzini <[email protected]>
commit 2beb6dad2e8f95d710159d5befb390e4f62ab5cf upstream.
SRCU uses a delayed work item. Skip cleaning it up, and the result is use-after-free in the work item callbacks.
--- arch/x86/include/asm/kvm_page_track.h | 1 + arch/x86/kvm/page_track.c | 8 ++++++++ arch/x86/kvm/x86.c | 1 + 3 files changed, 10 insertions(+)
arch/x86/include/asm/kvm_page_track.h +1 -0
@@ -35,6 +35,7 @@ struct kvm_page_track_notifier_node { };void kvm_page_track_init (struct kvm *kvm); +void kvm_page_track_cleanup (struct kvm *kvm);void kvm_page_track_free_memslot (struct kvm_memory_slot *free,struct kvm_memory_slot *dont);
arch/x86/kvm/page_track.c +8 -0
@@ -156,6 +156,14 @@ bool kvm_page_track_is_active(struct kvmreturn !!ACCESS_ONCE (slot->arch.gfn_track[mode][index]); } +void kvm_page_track_cleanup (struct kvm *kvm) +{ +struct kvm_page_track_notifier_head *head; + + head = &kvm->arch.track_notifier_head; +cleanup_srcu_struct (&head->track_srcu); +} +void kvm_page_track_init (struct kvm *kvm) {struct kvm_page_track_notifier_head *head;
arch/x86/kvm/x86.c +1 -0
@@ -7976,6 +7976,7 @@ void kvm_arch_destroy_vm(struct kvm *kvmkvm_free_vcpus (kvm);kvfree (rcu_dereference_check (kvm->arch.apic_map,1 ));kvm_mmu_uninit_vm (kvm); +kvm_page_track_cleanup (kvm); } void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/kvm-x86-cleanup-the-page-tracking-srcu-instance.patch queue-4.9/kvm-nvmx-fix-nested-vpid-vmx-exec-control.patch