Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp1797820ybi; Thu, 20 Jun 2019 04:04:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqwQRf0gonFktC/1d0EMn6XgfF+2rBGXj/9Em0Ht98BJRS1T6C3UQapMbEOMYWyrbCF+rh8T X-Received: by 2002:a17:902:f204:: with SMTP id gn4mr106770586plb.3.1561028650116; Thu, 20 Jun 2019 04:04:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561028650; cv=none; d=google.com; s=arc-20160816; b=xZZEt0lb549VBSeiB2IKc5rebkK16OcXKyNE5DZwz1WRcGpTbdL+cSFX0y3J8abiO7 7vxcWkJSQ0vFs1nZMjLxGSyVot56knH2a8l/1okPf7cu7lkAd7r5cQljZ99u3cMBm7Cd 3MD29GhTFmcxLB6elBMmLVwCUP7G29fhutXKIb/ooowtM5Lpki8qiHgRtQf5qmLXIAON 8RAGJvhcstD9IPIPzMIV/9AuGhoV1MRBMsNRHU6ktjiSfs2mJtfAlAXOPwgsWf1mznWt zktdtKqLBPowaxzsHVE1xxHXGDk/w4t9RcxOajvtzfnOjq/TdCZIhXy/AUNQ40ZWt+0n gMow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=6TVHw0FTRn13903+Sxw71KXnXeBID2utEAgBdw1rBsI=; b=ucMdF0GDILS64MnEVSNWVxecWvkCf0r4QzuUqeEeIFuMSNcp4Dy8FwkMJ+14NV9uog ph6zhSKIF3vqF9c/JdDhEvQjX0NiFB4N7VYXQCjeuG1hQKJHqH6QUjAhhPdqI6jp+0Av 2pbk2KeMrnOLUrD9+TvRYiT6w+tXbn9Y4ahNwbAx2EjOHNubC3B0Hdc+bJglDpl0sXIp onuoFMBlXQd+dWXuDmL+ekzYqbHGXNf4XT2pKQNHG5X1LlBAgchPSYUFC6ERDm2NRBAS iD8edRAfqr7EZUPb+BeZ5PoVi7UzgKR9koWTEgn0x/osAHeElKUshrRg8pOhmxp7dCBg aaZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l6si6012727pgl.444.2019.06.20.04.03.53; Thu, 20 Jun 2019 04:04:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731352AbfFTLCs (ORCPT + 99 others); Thu, 20 Jun 2019 07:02:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51954 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726268AbfFTLCq (ORCPT ); Thu, 20 Jun 2019 07:02:46 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 55595C049D67; Thu, 20 Jun 2019 11:02:46 +0000 (UTC) Received: from vitty.brq.redhat.com (unknown [10.43.2.155]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DE38C5D9E5; Thu, 20 Jun 2019 11:02:44 +0000 (UTC) From: Vitaly Kuznetsov To: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Jim Mattson Subject: [PATCH RFC 1/5] x86: KVM: svm: don't pretend to advance RIP in case wrmsr_interception() results in #GP Date: Thu, 20 Jun 2019 13:02:36 +0200 Message-Id: <20190620110240.25799-2-vkuznets@redhat.com> In-Reply-To: <20190620110240.25799-1-vkuznets@redhat.com> References: <20190620110240.25799-1-vkuznets@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 20 Jun 2019 11:02:46 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org svm->next_rip is only used by skip_emulated_instruction() and in case kvm_set_msr() fails we rightfully don't do that. Move svm->next_rip advancement to 'else' branch to avoid creating false impression that it's always advanced. By the way, rdmsr_interception() has it right already. Signed-off-by: Vitaly Kuznetsov --- arch/x86/kvm/svm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 5b2ea34bc9f2..982c6b9bfc90 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -4430,13 +4430,13 @@ static int wrmsr_interception(struct vcpu_svm *svm) msr.index = ecx; msr.host_initiated = false; - svm->next_rip = kvm_rip_read(&svm->vcpu) + 2; if (kvm_set_msr(&svm->vcpu, &msr)) { trace_kvm_msr_write_ex(ecx, data); kvm_inject_gp(&svm->vcpu, 0); return 1; } else { trace_kvm_msr_write(ecx, data); + svm->next_rip = kvm_rip_read(&svm->vcpu) + 2; return kvm_skip_emulated_instruction(&svm->vcpu); } } -- 2.20.1