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 8F0A6C7EE31 for ; Mon, 27 Feb 2023 22:32:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DC066B0095; Mon, 27 Feb 2023 17:31:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 16A846B0099; Mon, 27 Feb 2023 17:31:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DEF176B0096; Mon, 27 Feb 2023 17:31:49 -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 9920A6B009A for ; Mon, 27 Feb 2023 17:31:49 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 74672AACE5 for ; Mon, 27 Feb 2023 22:31:49 +0000 (UTC) X-FDA: 80514520338.22.5A864A6 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by imf07.hostedemail.com (Postfix) with ESMTP id 4C9EB40003 for ; Mon, 27 Feb 2023 22:31:47 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=emI5I9Wf; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf07.hostedemail.com: domain of rick.p.edgecombe@intel.com designates 192.55.52.136 as permitted sender) smtp.mailfrom=rick.p.edgecombe@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677537107; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=+kqsDAD87DHH8at7rwF6//m6V9jqq8z7byrF3dP8xHg=; b=kTh3yEoM4gWJcrPKkjljoEBVs21jwNAS+eltVgKuJ95tOdrBKAzL7YPke6OrDBJxEIW2Mo OdkMF1tT7lzillu6LJQwn+1ew5TBRt7bAa8Tez3g7DTEIo3z+ebKUNDO9piu5M355HRpnj sAbNJk/QgQSm8F2Vbi+HAucHVK32tOo= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=emI5I9Wf; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf07.hostedemail.com: domain of rick.p.edgecombe@intel.com designates 192.55.52.136 as permitted sender) smtp.mailfrom=rick.p.edgecombe@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677537107; a=rsa-sha256; cv=none; b=fErVvVe04aqlbIv0Eip4j7osm8budYuqiQ4ghhTRSErFznBeO41HDCdEFVNC+lsS8zKzKh MjsBblyKW5jYWOMTnkNz5xuSsQ7HOx22yfVjGdwmz2UHPDqhTXMVo4mvv5BYECUfF2BOiH yivOd3g3ONc6Dpgj7b7t/r35+gCEEMM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1677537107; x=1709073107; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=ZIfeT04mKir/YNhHsgsFjFvjvr/0UP7Swg3kZIhAJQw=; b=emI5I9Wf0/c85qRhbZNcoqugc3ao3FY6fP+QezXEE9FqJ+sFt35EpV2R 9g3FjuUd/Za0RnjRzL+RpFh61pDajbPoaN7mVvhFcQUoRZA19GsE2d57s Tn454XQ/+UaK6OxuoQap3bspazxr0Q9+8naffNRntLoqm767YpCs1Mc6Q joIu0nDPz4UcFbZpbrSenriREVPCxizwPsbLtKBBKkbWgRf0kUR24Rj8M 2qgMpktC5F5/K+WYbYJTh+O1LxoPFeSqhqzNvIR1K5Rzy4/Jq4tKjt719 UEVTkHcL46vly5g0czthGM/ilfIXL765NdJ4njMqwXVCmAmwQJI7FHY2d A==; X-IronPort-AV: E=McAfee;i="6500,9779,10634"; a="313657508" X-IronPort-AV: E=Sophos;i="5.98,220,1673942400"; d="scan'208";a="313657508" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2023 14:31:24 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10634"; a="848024631" X-IronPort-AV: E=Sophos;i="5.98,220,1673942400"; d="scan'208";a="848024631" Received: from leonqu-mobl1.amr.corp.intel.com (HELO rpedgeco-desk.amr.corp.intel.com) ([10.209.72.19]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2023 14:31:23 -0800 From: Rick Edgecombe To: 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 , Borislav Petkov , 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, david@redhat.com, debug@rivosinc.com Cc: rick.p.edgecombe@intel.com, Yu-cheng Yu Subject: [PATCH v7 22/41] mm/mmap: Add shadow stack pages to memory accounting Date: Mon, 27 Feb 2023 14:29:38 -0800 Message-Id: <20230227222957.24501-23-rick.p.edgecombe@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230227222957.24501-1-rick.p.edgecombe@intel.com> References: <20230227222957.24501-1-rick.p.edgecombe@intel.com> X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 4C9EB40003 X-Stat-Signature: sd6yhq6upgbhjej69wppg7bfbc5zqtak X-HE-Tag: 1677537107-635563 X-HE-Meta: U2FsdGVkX19hdnm5iuyKLHL7V6LDWTmFOpkoUPoFx07SVCk77y0bps10AGv9tI8XlRof5DFroAvyazdvSNlPk9Jb4gl499upi4pg5qKO12fqkrov2GGWQPv3ltLsD2eHe5WScpFkgjxeFsTl8pUTO5AbKdv2F9PMEnx0D/7E8twgM0wSFsfTzSTxbRy/Mz6zKKmKB3t9F0XyIK83r4zMgdXw/jpjKiiOcFbcbX+FjGAYqLLdMN12yYVXC4gnZ00LqjMc8A02GRe7cnf6BYoR0pTPqn8fUiiqjvlQr5CDOuB+GpRU3P7JHpqvTSmo5O2D1pUgGoMafPi4F1A8TbnMDELNJP8Yp8IT0KGVgNEi/X/ufibeBg3SsGrtxnwocdtfJvvo9uYP6PX+zj2j9DXscmYprS+LDm4wDwPlUlss24GMvQ4eQajPsPzoO8BnaWPsPu8yUI2yjgh/acr84pU8PuESxJU0MFcV7rGXPcDi2VTGSyGbuzqR/jWJgVuzjhV7lCOcMZYKFMJFERQ7Wbmk4mH6omYROiVTOfL9/wiI9wm1Yssaijv1EtpA1vjAsHGx+L7hJL2dI+qynedykCkBs0bas9O5sh7rEKyQJs03MCXVLmJurV5HtIX2NLGoQy4VVeBoY4gllkC5hHL0JQuT+6vWJYrH4wQ9pZhOEc0Bay93c7/C7AT0TDljYaTQwytXauw9E3KhM7LP/iiACEpFabp6Z/q6qvvvEb6VIurBNHjvFV7VdhHy/d3K+yfbc0Odq3QdbY2p+P0KFmGvw7mQMGrWdseSzvJaH+nU/Gd2yOWwIIZgidxiij6YGmoLqMBqYC9mif2qL7oCSbFNjFW2OKkptABEc913H00AXSzI8O6pAd24cEsUY2PFczJdkx1HS5gyEwRr0cK9vPq2eH4Q391aKzh1OFEhjnY3/Vp9IZ3Ab9LGf51eorcC+jPk9rOeUmK4nJvZutgqse42sFj n64IBXgX eeX9sRZj77iY67COnkzmc6MYvbn1+u3IpwYXulCmWeaZ8be5V/MLBBvV7zHGnzkcCNPztAKI7k2mdIcCLsugY1Be+PMUKMLRoxX2ihG8ktU8gHvDxdt2eFSP42j3d9gAmwr75kf12b7I+t34oHOTE6DGf4HQZgnd3DO6Y8JCoCeul575xJth/qf262arSvjrtRt5djxMvO08eqFdBWqoOJqZUJGigviqGxZpWQzoQ4hVKd9oPnmNhAOtwQfM6yBEaq2erPnC3vQwoifeUFj/FAzdFCGmlNGsRYlfLVBUY6tvLnCLCihA3B738uc+HhVNST5aQ/5e2JRT7cQITmCHJ62IUp+HmSl/cJc4M 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: From: Yu-cheng Yu The x86 Control-flow Enforcement Technology (CET) feature includes a new type of memory called shadow stack. This shadow stack memory has some unusual properties, which requires some core mm changes to function properly. Account shadow stack pages to stack memory. Do this by adding a VM_SHADOW_STACK check in is_stack_mapping(). Tested-by: Pengfei Xu Tested-by: John Allen Tested-by: Kees Cook Acked-by: Mike Rapoport (IBM) Reviewed-by: Kees Cook Signed-off-by: Yu-cheng Yu Co-developed-by: Rick Edgecombe Signed-off-by: Rick Edgecombe Cc: Kees Cook --- v7: - Change is_stack_mapping() to know about VM_SHADOW_STACK so the additions in vm_stat_account() can be dropped. (David Hildenbrand) v3: - Remove unneeded VM_SHADOW_STACK check in accountable_mapping() (Kirill) v2: - Remove is_shadow_stack_mapping() and just change it to directly bitwise and VM_SHADOW_STACK. Yu-cheng v26: - Remove redundant #ifdef CONFIG_MMU. Yu-cheng v25: - Remove #ifdef CONFIG_ARCH_HAS_SHADOW_STACK for is_shadow_stack_mapping(). --- mm/internal.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 7920a8b7982e..1d13d5580f64 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -491,14 +491,14 @@ static inline bool is_exec_mapping(vm_flags_t flags) } /* - * Stack area - automatically grows in one direction + * Stack area * - * VM_GROWSUP / VM_GROWSDOWN VMAs are always private anonymous: - * do_mmap() forbids all other combinations. + * VM_GROWSUP, VM_GROWSDOWN VMAs are always private + * anonymous. do_mmap() forbids all other combinations. */ static inline bool is_stack_mapping(vm_flags_t flags) { - return (flags & VM_STACK) == VM_STACK; + return ((flags & VM_STACK) == VM_STACK) || (flags & VM_SHADOW_STACK); } /* -- 2.17.1