Patch "KVM: nVMX: update last_nonleaf_level when initializing nested EPT" 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: nVMX: update last_nonleaf_level when initializing nested EPT
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-nvmx-update-last_nonleaf_level-when-initializing-nested-ept.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
fd19d3b45164466a4adce7cbff448ba9189e1427Mon Sep 17 00:00:00 2001
From: Ladi Prosek <[email protected]>
Date: Thu, 5 Oct 2017 11:10:22 +0200
Subject: KVM: nVMX: update last_nonleaf_level when initializing nested EPT
From: Ladi Prosek <[email protected]>
commit fd19d3b45164466a4adce7cbff448ba9189e1427 upstream.
The function updates context->root_level but didn't call update_last_nonleaf_level so the previous and potentially wrong value was used for page walks. For example, a zero value of last_nonleaf_level would allow a potential out-of-bounds access in arch/x86/mmu/paging_tmpl.h's walk_addr_generic function (CVE-2017-12188).
--- arch/x86/kvm/mmu.c | 1 + 1 file changed, 1 insertion(+)
arch/x86/kvm/mmu.c +1 -0
@@ -4169,6 +4169,7 @@ void kvm_init_shadow_ept_mmu(struct kvm_update_permission_bitmask (vcpu, context, true);update_pkru_bitmask (vcpu, context, true); +update_last_nonleaf_level (vcpu, context);reset_rsvds_bits_mask_ept (vcpu, context, execonly);reset_ept_shadow_zero_bits_mask (vcpu, context, execonly); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/kvm-nvmx-update-last_nonleaf_level-when-initializing-nested-ept.patch queue-4.9/kvm-mmu-always-terminate-page-walks-at-level-1.patch
Paolo Bonzini
maintainerQuoted 52 lines · On 16/10/2017 18:07, [email protected] wrote:
This is a note to let you know that I've just added the patch titled
KVM: nVMX: update
last_nonleaf_levelwhen initializing nested EPTto the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
kvm-nvmx-update-last_nonleaf_level-when-initializing-nested-ept.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.
From
fd19d3b45164466a4adce7cbff448ba9189e1427Mon Sep 17 00:00:00 2001
From: Ladi Prosek <[email protected]>
Date: Thu, 5 Oct 2017 11:10:22 +0200
Subject: KVM: nVMX: updatelast_nonleaf_levelwhen initializing nested EPTFrom: Ladi Prosek <[email protected]>
commit
fd19d3b45164466a4adce7cbff448ba9189e1427upstream.The function updates
context->root_levelbut didn't callupdate_last_nonleaf_levelso the previous and potentially wrong value was used for page walks. For example, a zero value oflast_nonleaf_levelwould allow a potential out-of-bounds access in arch/x86/mmu/paging_tmpl.h'swalk_addr_genericfunction (CVE-2017-12188).Fixes 155a97a3d7c78b46cef6f1a973c831bc5a4f82bbSigned-off-by Ladi Prosek <[email protected]>Signed-off-by Paolo Bonzini <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- arch/x86/kvm/mmu.c | 1 + 1 file changed, 1 insertion(+)arch/x86/kvm/mmu.c +1
-0@@ -4169,6 +4169,7 @@ void kvm_init_shadow_ept_mmu(struct kvm_update_permission_bitmask (vcpu, context, true);update_pkru_bitmask (vcpu, context, true); +update_last_nonleaf_level (vcpu, context);reset_rsvds_bits_mask_ept (vcpu, context, execonly);reset_ept_shadow_zero_bits_mask (vcpu, context, execonly); }
Quoted 4 lines
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/kvm-nvmx-update-last_nonleaf_level-when-initializing-nested-ept.patchqueue-4.9/kvm-mmu-always-terminate-page-walks-at-level-1.patch
The latter was enough to fix the bug (so it was the only one CCed stable), but it's safe to apply this one too to kernel where there are no conflicts.
Paolo