Received: by 10.213.65.68 with SMTP id h4csp580714imn; Fri, 23 Mar 2018 10:51:04 -0700 (PDT) X-Google-Smtp-Source: AG47ELv0yCwj3Q30++vYkR346sCDnQHb1ASZHgeyjYlFk74j/EauV5h0Wlfpmujnu24AMYMkg7oy X-Received: by 2002:a17:902:5a87:: with SMTP id r7-v6mr25532536pli.173.1521827464230; Fri, 23 Mar 2018 10:51:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521827464; cv=none; d=google.com; s=arc-20160816; b=0bIhO9ccLDDBg8NcgtTsLVzBiB6jA2dpSrojxhjwr5q9EBHJn0xqRZfCPEBTULOH0q 8rKMrHLpPkxPHJnhJPIlCNxzv93mBxN/r1fiASkIT7eEzfIjHS4APKEs+1qXkqZKP3U7 QT12YvPMiNKeNuJZ4TtlrM+fQ7u8JmXdBPskF8N/KPvwMn4z9nGxXWDNTGyd6usJrnIZ yASss64xw6wK/jW7GSbOG/AKRwRzbaWjYd6Lg7+iUEfZlSW9r6yFMzaxSjO2akdQogxh AMipyFFqaMJjx6q6psmCI/7xe95jhb1v5VHcq+Rg9Ndcs3JAyvUZJWYNLuik79oMOxGH qwig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:in-reply-to:references:date :from:cc:to:subject:arc-authentication-results; bh=Jb/5nOB6mmnuiSyjDTj0UDnyQQBIgsAPa84D04FJQxc=; b=CkO9XN9WZz8N9qc2Sy6rJltkqbT8El66c4WrDNizDL84OU4ihZseeoB7pDx7pfL7y5 WkrUeSQoQzUxF2JJ93Q76NT4opJHaWX+5h3qEZBpP8dfaDXbSgOdb1vs+XMnh1NVAIME kzMtXaRYovvQkKTWGADqH293CH3wfCW+0lGw0N8qlHuybAwQuAfvcFkt+nTNhMUE3QRu ki+yq4HObJOsjlsC/8vFaY9UwHtssla5NnwmRIC2E0q6q3b7c/sFFqhqYYquRCe2j8Ro 7DGjdxLr2BFPNYDU+KJ7YAk9PPXBkk5c8n18vFFHiaBr8epN25ptg1bXylEYGqSBpNeb sDDg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v7-v6si8695286plp.538.2018.03.23.10.50.49; Fri, 23 Mar 2018 10:51:04 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752234AbeCWRtK (ORCPT + 99 others); Fri, 23 Mar 2018 13:49:10 -0400 Received: from mga01.intel.com ([192.55.52.88]:36679 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752309AbeCWRq5 (ORCPT ); Fri, 23 Mar 2018 13:46:57 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Mar 2018 10:46:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,351,1517904000"; d="scan'208";a="27488111" Received: from viggo.jf.intel.com (HELO localhost.localdomain) ([10.54.39.119]) by orsmga007.jf.intel.com with ESMTP; 23 Mar 2018 10:46:57 -0700 Subject: [PATCH 06/11] x86/mm: remove extra filtering in pageattr code To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Dave Hansen , aarcange@redhat.com, luto@kernel.org, torvalds@linux-foundation.org, keescook@google.com, hughd@google.com, jgross@suse.com, x86@kernel.org, namit@vmware.com From: Dave Hansen Date: Fri, 23 Mar 2018 10:44:56 -0700 References: <20180323174447.55F35636@viggo.jf.intel.com> In-Reply-To: <20180323174447.55F35636@viggo.jf.intel.com> Message-Id: <20180323174456.A2891021@viggo.jf.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Hansen The pageattr code has a mode where it can set or clear PTE bits in existing PTEs, so the page protections of the *new* PTEs come from one of two places: 1. The set/clear masks: cpa->mask_clr / cpa->mask_set 2. The existing PTE We filter ->mask_set/clr for supported PTE bits at entry to __change_page_attr() so we never need to filter them again. The only other place permissions can come from is an existing PTE and those already presumably have good bits. We do not need to filter them again. Signed-off-by: Dave Hansen Cc: Andrea Arcangeli Cc: Andy Lutomirski Cc: Linus Torvalds Cc: Kees Cook Cc: Hugh Dickins Cc: Juergen Gross Cc: x86@kernel.org Cc: Nadav Amit --- b/arch/x86/mm/pageattr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff -puN arch/x86/mm/pageattr.c~x86-pageattr-dont-filter-global arch/x86/mm/pageattr.c --- a/arch/x86/mm/pageattr.c~x86-pageattr-dont-filter-global 2018-03-21 16:31:59.191192315 -0700 +++ b/arch/x86/mm/pageattr.c 2018-03-21 16:31:59.195192315 -0700 @@ -598,7 +598,6 @@ try_preserve_large_page(pte_t *kpte, uns req_prot = pgprot_clear_protnone_bits(req_prot); if (pgprot_val(req_prot) & _PAGE_PRESENT) pgprot_val(req_prot) |= _PAGE_PSE; - req_prot = canon_pgprot(req_prot); /* * old_pfn points to the large page base pfn. So we need @@ -718,7 +717,7 @@ __split_large_page(struct cpa_data *cpa, */ pfn = ref_pfn; for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc) - set_pte(&pbase[i], pfn_pte(pfn, canon_pgprot(ref_prot))); + set_pte(&pbase[i], pfn_pte(pfn, ref_prot)); if (virt_addr_valid(address)) { unsigned long pfn = PFN_DOWN(__pa(address)); @@ -935,7 +934,6 @@ static void populate_pte(struct cpa_data pte = pte_offset_kernel(pmd, start); pgprot = pgprot_clear_protnone_bits(pgprot); - pgprot = canon_pgprot(pgprot); while (num_pages-- && start < end) { set_pte(pte, pfn_pte(cpa->pfn, pgprot)); @@ -1234,7 +1232,7 @@ repeat: * after all we're only going to change it's attributes * not the memory it points to */ - new_pte = pfn_pte(pfn, canon_pgprot(new_prot)); + new_pte = pfn_pte(pfn, new_prot); cpa->pfn = pfn; /* * Do we really change anything ? _