From patchwork Thu Mar 2 20:41:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 9601793 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2CE3F6048B for ; Thu, 2 Mar 2017 23:44:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1CF8628608 for ; Thu, 2 Mar 2017 23:44:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 101AF2861D; Thu, 2 Mar 2017 23:44:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A9B0328608 for ; Thu, 2 Mar 2017 23:44:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751787AbdCBXor (ORCPT ); Thu, 2 Mar 2017 18:44:47 -0500 Received: from mail-pf0-f174.google.com ([209.85.192.174]:32784 "EHLO mail-pf0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752007AbdCBXop (ORCPT ); Thu, 2 Mar 2017 18:44:45 -0500 Received: by mail-pf0-f174.google.com with SMTP id w189so26735501pfb.0 for ; Thu, 02 Mar 2017 15:43:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=jhB4qH4M/dm/DCxm2aWYr1mp2Crl7+8PIucM3sxQPeE=; b=oYzxBoeUemhBo5ztksHRPIx+TKPIzLQq8DpsrSp7ShkYfHiCYQqaRFoeJZt7XvJqDT wdvXij9gxOPP488/Xll/OBQUXIqUEfS9Rd9wshnWNKTMScxfWBu8cMF1nERDv6YIApqD fS7hp88cnFUnNiQPBnsEyFXZ3+iXbsKMSq42vIePyVwLqBduxXc8L8OR3HfPqeId64J0 uK277xQ3OZUf44NtsbJhSnih5qhCp9oxuQmoKGD2E0Znt5UMU+hOFSBracZh+P3oecdJ 6v5pSx3jpw4v13KWQlBhoJ9Az1oBiW8MKPoLqATEn/JFH1G0vjpprFmawlAiqfQGe/DN TSSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=jhB4qH4M/dm/DCxm2aWYr1mp2Crl7+8PIucM3sxQPeE=; b=ZQfZgS3SDyJdozdpkVfaR1BoOpCSBmtoIhdGcVBIMh+2/Tsudk4tiwrgUXku/+WHZl aMG1b/9ZcYVscGSc89LDcC3g4J+IwLNGGCRk9C5RL6kAnOYbTXw9GwHmECkpMaBZRjF6 psEi7QTshwauGiDdHKQI8yg/8nEiKj8LunWXJU3gi/5j8/HIw34AMeAaloHC8LjyEDn6 2ShBVOplpqsLt1CPJvpjYmgu7awI/FddJ/EvV/7CPK9piMfw0S1fmpKXdLfDAx2fIAbA pz+MuUGrmy/iCLLHf/HYLiqg64hKlZcjVbUTv/QPVlqzF1VoutxLUkj7W6zPkR1nKc7F dCwQ== X-Gm-Message-State: AMke39kgjrERPdiHXZ7/rBukf0ttXgm9xbiHfjCek+QSVwHjbAc0RNn1PolsrRXJA5JTDvUZ X-Received: by 10.98.109.3 with SMTP id i3mr17766481pfc.125.1488487327166; Thu, 02 Mar 2017 12:42:07 -0800 (PST) Received: from jmattson.sea.corp.google.com ([100.100.206.80]) by smtp.gmail.com with ESMTPSA id g64sm18794730pfc.57.2017.03.02.12.42.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 Mar 2017 12:42:06 -0800 (PST) From: Jim Mattson To: kvm@vger.kernel.org Cc: Jim Mattson Subject: [PATCH] kvm: nVMX: VMCLEAR should not cause the vCPU to shut down Date: Thu, 2 Mar 2017 12:41:48 -0800 Message-Id: <20170302204148.12015-1-jmattson@google.com> X-Mailer: git-send-email 2.12.0.rc1.440.g5b76565f74-goog Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP VMCLEAR should silently ignore a failure to clear the launch state of the VMCS referenced by the operand. Signed-off-by: Jim Mattson --- arch/x86/kvm/vmx.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index ef4ba71dbb66..bca497a92541 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -7259,9 +7259,8 @@ static int handle_vmoff(struct kvm_vcpu *vcpu) static int handle_vmclear(struct kvm_vcpu *vcpu) { struct vcpu_vmx *vmx = to_vmx(vcpu); + u32 zero = 0; gpa_t vmptr; - struct vmcs12 *vmcs12; - struct page *page; if (!nested_vmx_check_permission(vcpu)) return 1; @@ -7272,22 +7271,9 @@ static int handle_vmclear(struct kvm_vcpu *vcpu) if (vmptr == vmx->nested.current_vmptr) nested_release_vmcs12(vmx); - page = nested_get_page(vcpu, vmptr); - if (page == NULL) { - /* - * For accurate processor emulation, VMCLEAR beyond available - * physical memory should do nothing at all. However, it is - * possible that a nested vmx bug, not a guest hypervisor bug, - * resulted in this case, so let's shut down before doing any - * more damage: - */ - kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu); - return 1; - } - vmcs12 = kmap(page); - vmcs12->launch_state = 0; - kunmap(page); - nested_release_page(page); + kvm_write_guest(vcpu->kvm, + vmptr + offsetof(struct vmcs12, launch_state), + &zero, sizeof(zero)); nested_free_vmcs02(vmx, vmptr);