Patch "KVM: x86: fix wbinvd_dirty_mask use-after-free" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: x86: fix wbinvd_dirty_mask use-after-free
to the 4.4-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-fix-wbinvd_dirty_mask-use-after-free.patch
and it can be found in the queue-4.4 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
bd768e146624cbec7122ed15dead8daa137d909dMon Sep 17 00:00:00 2001
From: Ido Yariv <[email protected]>
Date: Fri, 21 Oct 2016 12:39:57 -0400
Subject: KVM: x86: fix wbinvd_dirty_mask use-after-free
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Ido Yariv <[email protected]>
commit bd768e146624cbec7122ed15dead8daa137d909d upstream.
vcpu->arch.wbinvd_dirty_mask may still be used after freeing it, corrupting memory. For example, the following call trace may set a bit in an already freed cpu mask:
kvm_arch_vcpu_load
vcpu_load
vmx_free_vcpu_nested
vmx_free_vcpu
kvm_arch_vcpu_free
Fix this by deferring freeing of wbinvd_dirty_mask.
--- arch/x86/kvm/x86.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/x86/kvm/x86.c +3 -1
@@ -7252,10 +7252,12 @@ void kvm_put_guest_fpu(struct kvm_vcpu *void kvm_arch_vcpu_free (struct kvm_vcpu *vcpu) { +void *wbinvd_dirty_mask = vcpu->arch.wbinvd_dirty_mask; +kvmclock_reset (vcpu); -free_cpumask_var (vcpu->arch.wbinvd_dirty_mask); kvm_x86_ops->vcpu_free (vcpu); +free_cpumask_var (wbinvd_dirty_mask); } struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/kvm-x86-fix-wbinvd_dirty_mask-use-after-free.patch