]> www.infradead.org Git - users/jedix/linux-maple.git/commit
x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content
authorNicolai Stange <nstange@suse.de>
Wed, 18 Jul 2018 17:07:38 +0000 (19:07 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Sat, 11 Aug 2018 00:44:46 +0000 (20:44 -0400)
commite8e8a75b4a21ce5be75d4163e3dcf28d43710900
treecde8aea8523732b27ddc1d9d3baaa49904342772
parent73ba4d5b9b678fdcac4c37e97b2aef7e3b5e9b34
x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content

The slow path in vmx_l1d_flush() reads from vmx_l1d_flush_pages in order
to evict the L1d cache.

However, these pages are never cleared and, in theory, their data could be
leaked.

More importantly, KSM could merge a nested hypervisor's vmx_l1d_flush_pages
to fewer than 1 << L1D_CACHE_ORDER host physical pages and this would break
the L1d flushing algorithm: L1D on x86_64 is tagged by physical addresses.

Fix this by initializing the individual vmx_l1d_flush_pages with a
different pattern each.

Rename the "empty_zp" asm constraint identifier in vmx_l1d_flush() to
"flush_pages" to reflect this change.

Fixes: a47dd5f06714 ("x86/KVM/VMX: Add L1D flush algorithm")
Signed-off-by: Nicolai Stange <nstange@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Orabug: 28220674
CVE: CVE-2018-3646

(cherry picked from commit 288d152c23dcf3c09da46c5c481903ca10ebfef7)

Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
arch/x86/kvm/vmx.c