Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757736AbbEVXyJ (ORCPT ); Fri, 22 May 2015 19:54:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37491 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757376AbbEVXyG (ORCPT ); Fri, 22 May 2015 19:54:06 -0400 From: Bandan Das To: Boris Ostrovsky Cc: Xiao Guangrong , pbonzini@redhat.com, gleb@kernel.org, mtosatti@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] KVM: MMU: fix SMAP virtualization References: <1431356122-8500-1-git-send-email-guangrong.xiao@linux.intel.com> <555F94E6.3010200@oracle.com> Date: Fri, 22 May 2015 19:54:03 -0400 In-Reply-To: <555F94E6.3010200@oracle.com> (Boris Ostrovsky's message of "Fri, 22 May 2015 16:43:18 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1892 Lines: 57 Boris Ostrovsky writes: > On 05/11/2015 10:55 AM, Xiao Guangrong wrote: >> KVM may turn a user page to a kernel page when kernel writes a readonly >> user page if CR0.WP = 1. This shadow page entry will be reused after >> SMAP is enabled so that kernel is allowed to access this user page >> >> Fix it by setting SMAP && !CR0.WP into shadow page's role and reset mmu >> once CR4.SMAP is updated >> >> Signed-off-by: Xiao Guangrong >> --- > > >> >> @@ -4208,12 +4211,18 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa, >> const u8 *new, int bytes) >> { >> gfn_t gfn = gpa >> PAGE_SHIFT; >> - union kvm_mmu_page_role mask = { .word = 0 }; >> struct kvm_mmu_page *sp; >> LIST_HEAD(invalid_list); >> u64 entry, gentry, *spte; >> int npte; >> bool remote_flush, local_flush, zap_page; >> + union kvm_mmu_page_role mask = (union kvm_mmu_page_role) { >> + .cr0_wp = 1, >> + .cr4_pae = 1, >> + .nxe = 1, >> + .smep_andnot_wp = 1, >> + .smap_andnot_wp = 1, >> + }; >> >> > > > This breaks older compilers that can't initialize anon structures. How old ? Even gcc 3.1 says you can use unnamed struct/union fields and 3.2 is the minimum version required to compile the kernel as mentioned in the README. We could simply just name the structure, but I doubt this is the only place in the kernel code where it's being used this way :) Bandan > -boris > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/