Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4785625ooa; Tue, 14 Aug 2018 10:31:06 -0700 (PDT) X-Google-Smtp-Source: AA+uWPz53pnMh2QrGOjAzOJBpPuGXM2lX6pAmaum+vL3roXswlakVeKKaPWGTyWz1K6mCqJgL4PH X-Received: by 2002:a62:fd06:: with SMTP id p6-v6mr23824874pfh.167.1534267866461; Tue, 14 Aug 2018 10:31:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534267866; cv=none; d=google.com; s=arc-20160816; b=oKzzauxwDzA4Lwh4SuhYCo6i2A4rQ+DLxMSXT7sg4p+byIfcGWSNQm6zaF9Kbc0ifx 8Mo8lpKy7Kx+laxpl0hvGD1zzsm/XfLOBfKblMYXOxf2hcdqgG8z+3xa0i3+M94QEp2/ JxR3xVpBF8uNhjTZ2+trKFroIurXRndYUFf8w1oBxJryw5d0EnJatNWd+dv3wSCSOhoe 050J3MEGqmMN9cCb9/ZitS1fsFsCJYgyQ1M42It8+GHX1YkzCWHGAxhdaTJFlUELmop9 jRHFclIQv9UR0oxzwqiptRr5uDu1jhRI4mmMEGcvHHMnGu/B2D3/icv6acqIGBTp+D2x LOEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=SgkKTawKBacHK+KaPJZUHB3hE0aILzc6/vvwlsPnh9A=; b=m17Xgq/+aoEl5Xp1j6DCuCpeIzgMZsBRv8bJNZwVjTwJwooWXgAWD5+DNdR7fwAWYi 2OOD7MpYyjVc5s0glIIF5mMPUZ8c+FMZjHnGjWuvX0GV+JKyxJGG1x+C4Zte4gr2GkZR z0C4IndxOjNKDMIviKAP/NVlksZJeP7vtYVhpvpCtVthlCVnwxUih7+EeohOHWGcORlu NUAPYBRWM931fWeHaYQyvY7scFBU4fSTvz/2sU2lTJ+L1oLzWfAuHjIHNgQ3Fff2Z5Wg d0KCm+iS6kyFRIq2iahaM/t3GBdpyXdgmZtY6OCDOMCU6/g4m1EAOWZ97us5xVvfprSM dD/w== 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 q13-v6si18411116pgc.670.2018.08.14.10.30.51; Tue, 14 Aug 2018 10:31:06 -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 S2388873AbeHNUQK (ORCPT + 99 others); Tue, 14 Aug 2018 16:16:10 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:52578 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387825AbeHNUQK (ORCPT ); Tue, 14 Aug 2018 16:16:10 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id DEA54C5C; Tue, 14 Aug 2018 17:28:02 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andi Kleen , Thomas Gleixner Subject: [PATCH 4.18 75/79] x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert Date: Tue, 14 Aug 2018 19:17:34 +0200 Message-Id: <20180814171341.015912420@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180814171336.799314117@linuxfoundation.org> References: <20180814171336.799314117@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Andi Kleen Some cases in THP like: - MADV_FREE - mprotect - split mark the PMD non present for temporarily to prevent races. The window for an L1TF attack in these contexts is very small, but it wants to be fixed for correctness sake. Use the proper low level functions for pmd/pud_mknotpresent() to address this. Signed-off-by: Andi Kleen Signed-off-by: Thomas Gleixner Signed-off-by: Greg Kroah-Hartman --- arch/x86/include/asm/pgtable.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -410,11 +410,6 @@ static inline pmd_t pmd_mkwrite(pmd_t pm return pmd_set_flags(pmd, _PAGE_RW); } -static inline pmd_t pmd_mknotpresent(pmd_t pmd) -{ - return pmd_clear_flags(pmd, _PAGE_PRESENT | _PAGE_PROTNONE); -} - static inline pud_t pud_set_flags(pud_t pud, pudval_t set) { pudval_t v = native_pud_val(pud); @@ -469,11 +464,6 @@ static inline pud_t pud_mkwrite(pud_t pu return pud_set_flags(pud, _PAGE_RW); } -static inline pud_t pud_mknotpresent(pud_t pud) -{ - return pud_clear_flags(pud, _PAGE_PRESENT | _PAGE_PROTNONE); -} - #ifdef CONFIG_HAVE_ARCH_SOFT_DIRTY static inline int pte_soft_dirty(pte_t pte) { @@ -577,6 +567,18 @@ static inline pud_t pfn_pud(unsigned lon return __pud(pfn | check_pgprot(pgprot)); } +static inline pmd_t pmd_mknotpresent(pmd_t pmd) +{ + return pfn_pmd(pmd_pfn(pmd), + __pgprot(pmd_flags(pmd) & ~(_PAGE_PRESENT|_PAGE_PROTNONE))); +} + +static inline pud_t pud_mknotpresent(pud_t pud) +{ + return pfn_pud(pud_pfn(pud), + __pgprot(pud_flags(pud) & ~(_PAGE_PRESENT|_PAGE_PROTNONE))); +} + static inline u64 flip_protnone_guard(u64 oldval, u64 val, u64 mask); static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)