From patchwork Tue Jun 9 13:13:07 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Tosatti X-Patchwork-Id: 29012 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n59DG9GI004583 for ; Tue, 9 Jun 2009 13:16:10 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758138AbZFINQB (ORCPT ); Tue, 9 Jun 2009 09:16:01 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759516AbZFINQA (ORCPT ); Tue, 9 Jun 2009 09:16:00 -0400 Received: from mx2.redhat.com ([66.187.237.31]:42155 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757366AbZFINP6 (ORCPT ); Tue, 9 Jun 2009 09:15:58 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n59DG1LL009375 for ; Tue, 9 Jun 2009 09:16:01 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n59DFun1032567; Tue, 9 Jun 2009 09:15:57 -0400 Received: from amt.cnet (vpn-10-7.str.redhat.com [10.32.10.7]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n59DFsjP026731; Tue, 9 Jun 2009 09:15:55 -0400 Received: from amt.cnet (amt.cnet [127.0.0.1]) by amt.cnet (Postfix) with ESMTP id 23873274FD6; Tue, 9 Jun 2009 10:15:27 -0300 (BRT) Received: (from marcelo@localhost) by amt.cnet (8.14.3/8.14.3/Submit) id n59DFPM6007476; Tue, 9 Jun 2009 10:15:25 -0300 Message-Id: <20090609131406.113733303@localhost.localdomain> References: <20090609131303.446673264@localhost.localdomain> User-Agent: quilt/0.46-1 Date: Tue, 09 Jun 2009 10:13:07 -0300 From: Marcelo Tosatti To: kvm@vger.kernel.org Cc: avi@redhat.com, Marcelo Tosatti Subject: [patch 4/4] KVM: MMU audit: audit_mappings tweaks Content-Disposition: inline; filename=mmu-audit-4 X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org - Fail early in case gfn_to_pfn returns is_error_pfn. - For the pre pte write case, avoid spurious "gva is valid but spte is notrap" messages (the emulation code does the guest write first, so this particular case is OK). Signed-off-by: Marcelo Tosatti Index: kvm/arch/x86/kvm/mmu.c =================================================================== --- kvm.orig/arch/x86/kvm/mmu.c +++ kvm/arch/x86/kvm/mmu.c @@ -3092,6 +3092,11 @@ static void audit_mappings_page(struct k pfn_t pfn = gfn_to_pfn(vcpu->kvm, gfn); hpa_t hpa = (hpa_t)pfn << PAGE_SHIFT; + if (is_error_pfn(pfn)) { + kvm_release_pfn_clean(pfn); + continue; + } + if (is_shadow_present_pte(ent) && (ent & PT64_BASE_ADDR_MASK) != hpa) printk(KERN_ERR "xx audit error: (%s) levels %d" @@ -3259,7 +3264,8 @@ static void kvm_mmu_audit(struct kvm_vcp audit_msg = msg; audit_rmap(vcpu); audit_write_protection(vcpu); - audit_mappings(vcpu); + if (strcmp("pre pte write", audit_msg) != 0) + audit_mappings(vcpu); audit_writable_sptes_have_rmaps(vcpu); dbg = olddbg; }