Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp3397869pxv; Mon, 28 Jun 2021 03:47:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNa1ILrmTFkomT3r5j8QSrOXnOM1Wdm2EB2VDJ1Ul3VUzK3GkJ4wVbIJ5H+lCBfOOpp2lh X-Received: by 2002:aa7:dd57:: with SMTP id o23mr31720042edw.6.1624877222648; Mon, 28 Jun 2021 03:47:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624877222; cv=none; d=google.com; s=arc-20160816; b=XxBd9qC083T9ZvKDJ1u+wtZVSWXbTqanVLgZoOrzlRcqLT+yD3oD2vJPBgRdfnwMI8 VOOu9bI4644U1WJ+B54tWgmT7vrUZqRx4+QNtaJDuX2hHASAftGfNeYQkaWqiZlsRaCc C2SL9lluR9Ol8IMm1xJZvag9r8DdmZGsm3rjDysCJGXYNDTDWOcaK0JOgRrEoUuutmwP +n+4dwdG/tTCxouQ3SVc+D2lvdj0y/Q1/Dpn6LA6lBZeXtq3Y2Hc/MHIPr/lGAGbVKz+ 2aZGDbDx35YlpS9rcea5xe4Tm3FGANr5QpKmymMN5f1KgfYiAMxyRxUxjKgeH/Iz+LwL X4jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8ClWmNJunkduYZWOpWbHN9GQTktpYf3xp4ONsqAgRec=; b=XAFLD2EnYN+Nk2kjGRwBdR9smZyjfLf1hq9juuQa/AqaY/1DNdCt18eZXt/5cgNGFi R0h6uumPEV95V7Bexrjk1vxKPcOL0vjILwkems0/97Xumoe9RigKhCgmaXVIBrlXpg68 yfhqNW+Zoxn+7liEdsb99v1hx47jcxwjHfxL4BocB35cPuUoCSH6Jsgey3i3o0iLOl08 D7DbRnXSCgk+x4TPdcDHE6gqXEGG/4zEsZ/dPykVUJSX9eols94be/LViXn75vK5Qce0 9H4aJULJc9QxRZrkZkOPa9jBeRDr89aGKe503ZVYe2Xu4dfT1Mb2haafO+lj3tQuI0Cx VQ0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=buWnAqoO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r7si14463825edq.396.2021.06.28.03.46.16; Mon, 28 Jun 2021 03:47:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=buWnAqoO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232617AbhF1KrU (ORCPT + 99 others); Mon, 28 Jun 2021 06:47:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:28305 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232769AbhF1KrL (ORCPT ); Mon, 28 Jun 2021 06:47:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624877085; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8ClWmNJunkduYZWOpWbHN9GQTktpYf3xp4ONsqAgRec=; b=buWnAqoOwOVR6zt5/m57RspFdujOUvDULSbJzVZYHjDBu4AQPyJMWXg6MtRuzHMILBjzDs hgeLcIcQ/FkknLc1WequdJ3o2sLno+2oaXktrBI3snwsLqo6broAZRtjaBMdvVmfFoN24B 5oquk/vTkjQBamUBpOwUVZRIvSWEw68= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-112-JPVw_o13M5C00PCKkQ0AeA-1; Mon, 28 Jun 2021 06:44:44 -0400 X-MC-Unique: JPVw_o13M5C00PCKkQ0AeA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E5A4F19253C6; Mon, 28 Jun 2021 10:44:42 +0000 (UTC) Received: from vitty.brq.redhat.com (unknown [10.40.194.122]) by smtp.corp.redhat.com (Postfix) with ESMTP id B96A45C1CF; Mon, 28 Jun 2021 10:44:37 +0000 (UTC) From: Vitaly Kuznetsov To: kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Wanpeng Li , Jim Mattson , Maxim Levitsky , Cathy Avery , Emanuele Giuseppe Esposito , Tom Lendacky , Michael Roth , linux-kernel@vger.kernel.org Subject: [PATCH 2/6] KVM: nSVM: Check that VM_HSAVE_PA MSR was set before VMRUN Date: Mon, 28 Jun 2021 12:44:21 +0200 Message-Id: <20210628104425.391276-3-vkuznets@redhat.com> In-Reply-To: <20210628104425.391276-1-vkuznets@redhat.com> References: <20210628104425.391276-1-vkuznets@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org APM states that "The address written to the VM_HSAVE_PA MSR, which holds the address of the page used to save the host state on a VMRUN, must point to a hypervisor-owned page. If this check fails, the WRMSR will fail with a #GP(0) exception. Note that a value of 0 is not considered valid for the VM_HSAVE_PA MSR and a VMRUN that is attempted while the HSAVE_PA is 0 will fail with a #GP(0) exception." svm_set_msr() already checks that the supplied address is valid, so only check for '0' is missing. Add it to nested_svm_vmrun(). Signed-off-by: Vitaly Kuznetsov --- arch/x86/kvm/svm/nested.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index 21d03e3a5dfd..1c6b0698b52e 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -618,6 +618,11 @@ int nested_svm_vmrun(struct kvm_vcpu *vcpu) struct kvm_host_map map; u64 vmcb12_gpa; + if (!svm->nested.hsave_msr) { + kvm_inject_gp(vcpu, 0); + return 1; + } + if (is_smm(vcpu)) { kvm_queue_exception(vcpu, UD_VECTOR); return 1; -- 2.31.1