linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Maxim Levitsky <mlevitsk@redhat.com>,
	kvm@vger.kernel.org, Vitaly Kuznetsov <vkuznets@redhat.com>,
	Borislav Petkov <bp@alien8.de>, Bandan Das <bsd@redhat.com>,
	open list <linux-kernel@vger.kernel.org>,
	Joerg Roedel <joro@8bytes.org>, Ingo Molnar <mingo@redhat.com>,
	Wei Huang <wei.huang2@amd.com>,
	"open list:KERNEL SELFTEST FRAMEWORK" 
	<linux-kselftest@vger.kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Jim Mattson <jmattson@google.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
	<x86@kernel.org>, Shuah Khan <shuah@kernel.org>,
	Wanpeng Li <wanpengli@tencent.com>
Subject: Re: [PATCH 07/14] KVM: x86: SVM: add warning for CVE-2021-3656
Date: Tue, 12 Oct 2021 00:21:45 +0000	[thread overview]
Message-ID: <YWTVGaX4V1eR6k0k@google.com> (raw)
In-Reply-To: <f0c0e659-23a8-59ab-edf8-5b380d723493@redhat.com>

On Thu, Sep 23, 2021, Paolo Bonzini wrote:
> On 14/09/21 17:48, Maxim Levitsky wrote:
> > Just in case, add a warning ensuring that on guest entry,
> > either both VMLOAD and VMSAVE intercept is enabled or
> > vVMLOAD/VMSAVE is enabled.
> > 
> > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> > ---
> >   arch/x86/kvm/svm/svm.c | 6 ++++++
> >   1 file changed, 6 insertions(+)
> > 
> > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> > index 861ac9f74331..deeebd05f682 100644
> > --- a/arch/x86/kvm/svm/svm.c
> > +++ b/arch/x86/kvm/svm/svm.c
> > @@ -3784,6 +3784,12 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
> >   	WARN_ON_ONCE(kvm_apicv_activated(vcpu->kvm) != kvm_vcpu_apicv_active(vcpu));
> > +	/* Check that CVE-2021-3656 can't happen again */
> > +	if (!svm_is_intercept(svm, INTERCEPT_VMSAVE) ||
> > +	    !svm_is_intercept(svm, INTERCEPT_VMSAVE))
> > +		WARN_ON(!(svm->vmcb->control.virt_ext &
> > +			  VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK));
> > +
> >   	sync_lapic_to_cr8(vcpu);
> >   	if (unlikely(svm->asid != svm->vmcb->control.asid)) {
> > 
> 
> While it's nice to be "proactive", this does adds some extra work. Maybe it
> should be under CONFIG_DEBUG_KERNEL.  It could be useful to make it into its
> own function so we can add similar intercept invariants in the same place.

I don't know that DEBUG_KERNEL will guard much, DEBUG_KERNEL=y is very common,
e.g. it's on by default in the x86 defconfigs.  I too agree it's nice to be
proactive, but this isn't that different than say failing to intercept CR3 loads
when shadow paging is enabled.

If we go down the path of effectively auditing KVM invariants, I'd rather we
commit fully and (a) add a dedicated Kconfig that is highly unlikely to be turned
on by accident and (b) audit a large number of invariants.

  reply	other threads:[~2021-10-12  0:21 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-14 15:48 [PATCH 00/14] nSVM fixes and optional features Maxim Levitsky
2021-09-14 15:48 ` [PATCH 01/14] KVM: x86: nSVM: restore int_vector in svm_clear_vintr Maxim Levitsky
2021-09-23 14:04   ` Paolo Bonzini
2021-09-14 15:48 ` [PATCH 02/14] KVM: x86: selftests: test simultaneous uses of V_IRQ from L1 and L0 Maxim Levitsky
2021-09-23 14:05   ` Paolo Bonzini
2021-09-14 15:48 ` [PATCH 03/14] KVM: x86: nSVM: test eax for 4K alignment for GP errata workaround Maxim Levitsky
2021-09-23 14:05   ` Paolo Bonzini
2021-09-14 15:48 ` [PATCH 04/14] KVM: x86: nSVM: don't copy pause related settings Maxim Levitsky
2021-09-14 15:48 ` [PATCH 05/14] KVM: x86: nSVM: don't copy virt_ext from vmcb12 Maxim Levitsky
2021-09-23 14:06   ` Paolo Bonzini
2021-09-14 15:48 ` [PATCH 06/14] KVM: x86: SVM: don't set VMLOAD/VMSAVE intercepts on vCPU reset Maxim Levitsky
2021-09-23 16:40   ` Paolo Bonzini
2021-09-14 15:48 ` [PATCH 07/14] KVM: x86: SVM: add warning for CVE-2021-3656 Maxim Levitsky
2021-09-23 16:44   ` Paolo Bonzini
2021-10-12  0:21     ` Sean Christopherson [this message]
2021-10-11 17:30   ` Xiaoyao Li
2021-10-12  7:51     ` Maxim Levitsky
2021-09-14 15:48 ` [PATCH 08/14] KVM: x86: SVM: add module param to control LBR virtualization Maxim Levitsky
2021-09-14 15:48 ` [PATCH 09/14] KVM: x86: nSVM: correctly virtualize LBR msrs when L2 is running Maxim Levitsky
2021-09-14 15:48 ` [PATCH 10/14] KVM: x86: nSVM: implement nested LBR virtualization Maxim Levitsky
2021-09-14 15:48 ` [PATCH 11/14] KVM: x86: nSVM: implement nested VMLOAD/VMSAVE Maxim Levitsky
2021-09-14 15:48 ` [PATCH 12/14] KVM: x86: SVM: add module param to control TSC scaling Maxim Levitsky
2021-09-14 15:48 ` [PATCH 13/14] KVM: x86: nSVM: implement nested " Maxim Levitsky
2021-09-14 15:48 ` [PATCH 14/14] KVM: x86: nSVM: support PAUSE filter threshold and count Maxim Levitsky
2021-09-23 16:54 ` [PATCH 00/14] nSVM fixes and optional features Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YWTVGaX4V1eR6k0k@google.com \
    --to=seanjc@google.com \
    --cc=bp@alien8.de \
    --cc=bsd@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mlevitsk@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=wei.huang2@amd.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).