From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C17E9C4332F for ; Tue, 20 Dec 2022 21:29:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 315278E0002; Tue, 20 Dec 2022 16:29:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 29E068E0001; Tue, 20 Dec 2022 16:29:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 117E38E0002; Tue, 20 Dec 2022 16:29:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id F18218E0001 for ; Tue, 20 Dec 2022 16:29:18 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 40C60120953 for ; Tue, 20 Dec 2022 21:29:18 +0000 (UTC) X-FDA: 80263975596.29.BC8184A Received: from mail.skyhub.de (mail.skyhub.de [5.9.137.197]) by imf24.hostedemail.com (Postfix) with ESMTP id DDCD3180008 for ; Tue, 20 Dec 2022 21:29:14 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=alien8.de header.s=dkim header.b=ImWmLIAx; spf=pass (imf24.hostedemail.com: domain of bp@alien8.de designates 5.9.137.197 as permitted sender) smtp.mailfrom=bp@alien8.de; dmarc=pass (policy=none) header.from=alien8.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671571756; a=rsa-sha256; cv=none; b=ACD84mVB/24zobUA/+8mlRmA8p/rZrch3TWRS23I6jnUNJlYgrnKfRvVMPms2hHNjVeumg 8H5D09qm8AKsted+JLPXxcmy54XWRny3Dc9vwAb5nqnapuGu2UhfvjwyhwrzDaOUpzLOYi L9DShu2ptg3ea69R4EUTxlHKiTwiukU= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=alien8.de header.s=dkim header.b=ImWmLIAx; spf=pass (imf24.hostedemail.com: domain of bp@alien8.de designates 5.9.137.197 as permitted sender) smtp.mailfrom=bp@alien8.de; dmarc=pass (policy=none) header.from=alien8.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1671571756; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=v9/xoJRbxbZ1eXDTI+dOLyl7gGf5dXshSBt7FGH5iiI=; b=7Ys980PL7dBFb6hS5/D0XypHxHvzdyZA7axTm/ncY7H9GqnBifK+CaVDO2slVHzKtcFf2p I4fULJpQrjzRJiaM9hhzUZ2LCPKhkyTC6vlcAa28tJW7Cjq2CL4ZMLt3GZ1vVhlyrpB6F/ qiGDDGc83MnYJcCaSQscKrwNjp9OhOE= Received: from zn.tnic (p5de8e9fe.dip0.t-ipconnect.de [93.232.233.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 5517F1EC0559; Tue, 20 Dec 2022 22:29:13 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1671571753; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references; bh=v9/xoJRbxbZ1eXDTI+dOLyl7gGf5dXshSBt7FGH5iiI=; b=ImWmLIAx5W2cB0d7M46w8fkIgLrn6ZbI/6eifVkfLTeSmEEK+ZGphTyC4UW7vXNHQdneB6 Lb6L/ZD1476fVEdqgYBXF7JrJ1LciLjQ3aoInU54tbbSEAdysBUKMBJzy5KKp+hlDrqvjR dm6dBunVddAsbid5FvKiQscE/xm5C60= Date: Tue, 20 Dec 2022 22:29:13 +0100 From: Borislav Petkov To: Rick Edgecombe Cc: x86@kernel.org, "H . Peter Anvin" , Thomas Gleixner , Ingo Molnar , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-api@vger.kernel.org, Arnd Bergmann , Andy Lutomirski , Balbir Singh , Cyrill Gorcunov , Dave Hansen , Eugene Syromiatnikov , Florian Weimer , "H . J . Lu" , Jann Horn , Jonathan Corbet , Kees Cook , Mike Kravetz , Nadav Amit , Oleg Nesterov , Pavel Machek , Peter Zijlstra , Randy Dunlap , Weijiang Yang , "Kirill A . Shutemov" , John Allen , kcc@google.com, eranian@google.com, rppt@kernel.org, jamorris@linux.microsoft.com, dethoma@microsoft.com, akpm@linux-foundation.org, Andrew.Cooper3@citrix.com, christina.schimpe@intel.com, Yu-cheng Yu Subject: Re: [PATCH v4 10/39] x86/mm: Introduce _PAGE_COW Message-ID: References: <20221203003606.6838-1-rick.p.edgecombe@intel.com> <20221203003606.6838-11-rick.p.edgecombe@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20221203003606.6838-11-rick.p.edgecombe@intel.com> X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: DDCD3180008 X-Stat-Signature: 53xjnnqbakzhdkb8oame7g5x68ybz7gq X-HE-Tag: 1671571754-375332 X-HE-Meta: U2FsdGVkX19/5Sow/WvWAV3Y9Ee9Qkow0eM3gjdM/512DDJQMtHbqeyxzCVxJQESxG7iVZIqyAOiWPq/tvzw+vr4CcaJE9zoUc39JuQyWxBVfRP1H1iXwD4spjSvfOJP/ululQROmKwjVR5JenIAtpkR8C/zOmV+42SRm8QGQxafaAxwVPQ9NOzcq0wfsjNmW38darP48sjtl+8ocW3bUFPuzmfp6tA4+edrmb8iq+iYXVV+6UYKUVVuWU0CFj8GnDdlCVoy6mBt5HUWt73TCP199f5JJHmA3acZ26+gXS9cYPoUEUkHcQUmVrRAoZcpA2pi8Bhi96NOw08BbPyjBATWk5zMxJJHMLVGeqxbnw2RUCHz/2s3EpVNkHPRPtQMA3O/CUlGr/KIHn5OvXYjy115gmRZEOnMTLvxHP+hYb+wAgjm8d8vX1tjJftRrPqSwDtmnAZZO7mCHPQjvPm3NA80Voh2cY5aOcRJyu4n1wDPJIIlKJc1YsS8GFZ+kEdoPlvDHugLSC8PDayiFrDA24PzT3v8hJF0mnK5P8koNn1O5K+5qyEkmdtAwbpbFnrUkrccykQwcz8lgTVZMUcGhTl9mJCIdPyKEFSyLeaVB0JrWbMmoUOD5r9B2Z6ecMzQYg0uTNVdciyyUTXUspl5wDQtyBFvMCK3oYjEfA3AMLNmYuA/O7hKc/YpN9fBisyt/YP+/aIkIqkNhAB1bGdnhjd9IXzqlmWrzB7vc3kHlooXW5sL+tohUIhweqgXE0KTQKutJoZi1FFBSXw27Evj3Y9eJ9ea4Fa7VO/F73u5u/LbFn2oeON1x584GHTDwSomXp8VDuaYrfvpoNN2PhKLBmXZ6HkXQjJWaSEBqY19fJ0wGrY9wtucytbq5S4ERo7EsChHTepVD8Pd5Uh2Ks6wpMPm5uRudT692PGZK/6mwkSuFUzq2gx3UewvqkKjDJXmgqQXNcrYPQfmJlJspLY MIeEX+yh uUI6y X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Dec 02, 2022 at 04:35:37PM -0800, Rick Edgecombe wrote: > There are six bits left available to software in the 64-bit PTE after > consuming a bit for _PAGE_COW. No space is consumed in 32-bit kernels > because shadow stacks are not enabled there. > > This is a prepratory patch. Changes to actually start marking _PAGE_COW Unknown word [prepratory] in commit message. Suggestions: ['preparatory', > will follow once other pieces are in place. And regardless, you don't really need this sentence at all, AFAICT. ... > +/* > + * Normally COW memory can result in Dirty=1,Write=0 PTs. But in the case ^^^ PTEs. > + * of X86_FEATURE_USER_SHSTK, the software COW bit is used, since the > + * Dirty=1,Write=0 will result in the memory being treated as shaodw stack > + * by the HW. So when creating COW memory, a software bit is used > + * _PAGE_BIT_COW. The following functions pte_mkcow() and pte_clear_cow() > + * take a PTE marked conventially COW (Dirty=1) and transition it to the Unknown word [conventially] in comment. Suggestions: ['conventionally', ... > + * shadow stack compatible version of COW (Cow=1). > + */ > + ^ Superfluous newline. > +static inline pte_t pte_mkcow(pte_t pte) > +{ > + if (!cpu_feature_enabled(X86_FEATURE_USER_SHSTK)) > + return pte; > + > + pte = pte_clear_flags(pte, _PAGE_DIRTY); > + return pte_set_flags(pte, _PAGE_COW); > +} > + > +static inline pte_t pte_clear_cow(pte_t pte) > +{ > + /* > + * _PAGE_COW is unnecessary on !X86_FEATURE_USER_SHSTK kernels. I'm guessing this "unnecessary" is supposed to mean that on kernels not supporting shadow stack, a COW page uses the old bit flags? I.e., Dirty=1,Write=0? Might as well write it this way to be perfectly clear. > + * See the _PAGE_COW definition for more details. > + */ > + if (!cpu_feature_enabled(X86_FEATURE_USER_SHSTK)) > + return pte; > + > + /* > + * PTE is getting copied-on-write, so it will be dirtied > + * if writable, or made shadow stack if shadow stack and > + * being copied on access. Set they dirty bit for both "Set the dirty bit.." > + * cases. > + */ > + pte = pte_set_flags(pte, _PAGE_DIRTY); > + return pte_clear_flags(pte, _PAGE_COW); > +} Rest looks ok. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette