From patchwork Sat Dec 3 00:35:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Edgecombe, Rick P" X-Patchwork-Id: 29179 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp1142706wrr; Fri, 2 Dec 2022 16:41:54 -0800 (PST) X-Google-Smtp-Source: AA0mqf66Q74bFUtC3gQHnn48SC4W++y/obGZQfdoxmXbDQgUqbn35VK3oo+ocSCnkK6ZJlTm1bcj X-Received: by 2002:a17:906:9f07:b0:7be:2fbd:828f with SMTP id fy7-20020a1709069f0700b007be2fbd828fmr26713993ejc.593.1670028114390; Fri, 02 Dec 2022 16:41:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670028114; cv=none; d=google.com; s=arc-20160816; b=xxVz4lS85/cNjDOHw65SSl5r7F0XD2TZW0nUGnEQeOhIH5vEKj9cEV26w++JeF5hXC HxSS1C8IlOzVmt7lIP8Je+a6KFTT7E9hmewW4UghPwpynSYrye2M4a8zCQcXJ9xdDr+Z dPuEiu9c0vpq8izl0iRS91LazfMlj1SUfMp62BOtrbwOiVs5wLZzCuiYpBD2/uzdMC63 Ge+UKyKBlmMqVVQnycB/UJ32R1wOnLE7XjxntnWHkgbK+ccyB0cd9l9tcVEoKpgJj3Me y8102elmlD/EQ0pIoEPqNIvUzLX80zNkXWImP042XwsAvNtN3a6rgfVi1oE/14ryKlzk 3ARw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=udV8Xc2KkKJNVzFok9LmZFYgqQbdMsOpmWfD5xkHaGg=; b=nkDP8s8yd52cA/IUzwFyC2CMwaQLaPZIS7T44tywucsNXsmXcROiFJbPJKxtRDu/cW I4W8H1Nab/uV62y7T+wqP9qFapd4/hmIYhjvAS8YRcMnBRFW8D2Xn3EJw812oc7/GwHI S2JlTwfQA7PFmKefwpHP7R1wVVMWlOYG6d9O1GkziRv+kr0KGRHkZRb9E+3ecRLVe6VE L2xurZmGqOnOPxah7q0JFyD2N18RcEIyxpBDdDO/aPgcw6EVghpIS2iYi3JUkfS/Ufol CNUipvhNGPLBj+YrV1uHNdM8NLpnzBLo+pBF1r7DhF3gcysRvrSqgXERtOjoyz6DK6pf OtAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XUwSQm9O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sc9-20020a1709078a0900b007b790c183d7si7737471ejc.312.2022.12.02.16.41.31; Fri, 02 Dec 2022 16:41:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=XUwSQm9O; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235098AbiLCAks (ORCPT + 99 others); Fri, 2 Dec 2022 19:40:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235037AbiLCAkM (ORCPT ); Fri, 2 Dec 2022 19:40:12 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 386E22F031; Fri, 2 Dec 2022 16:37:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670027877; x=1701563877; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=xyn1ghT0ss9HjfLIsJBLdJfTOl5XEifC54z6shwmlw0=; b=XUwSQm9OpdskCcQA3MfVxfaL40Eyg9XXhU34b0OqlykomH0eSG3DH5Ds cQWl4XuuX4FqgJvbCVftAlQZclYlsLpM+kuvZu9wqmi3uzhQkiJJfcbd+ hGqP37im8bIQ2AphD9RvgCdJwORPRscDPVMigyDqGLQ2j0HJSpqPrr0Xq s9Z74L+UfprlPK1cFWwaIsAK6aT3pkBmIwB6ZB6HJ49TcQMQss0HlHT8r QXKHj4NiBuBFHqH8TFc4gsuLDu9IIfcorqUaK5b5tsdjYKIaZHWE/U5IG pD35MQqFT4az71nB442UfUIW/rNIB4er7yzNfrOHKCxNV5JA2WYelz5T5 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10549"; a="313711165" X-IronPort-AV: E=Sophos;i="5.96,213,1665471600"; d="scan'208";a="313711165" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2022 16:37:18 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10549"; a="787479918" X-IronPort-AV: E=Sophos;i="5.96,213,1665471600"; d="scan'208";a="787479918" Received: from bgordon1-mobl1.amr.corp.intel.com (HELO rpedgeco-desk.amr.corp.intel.com) ([10.212.211.211]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2022 16:37:15 -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 Cc: rick.p.edgecombe@intel.com, Yu-cheng Yu Subject: [PATCH v4 20/39] mm/mmap: Add shadow stack pages to memory accounting Date: Fri, 2 Dec 2022 16:35:47 -0800 Message-Id: <20221203003606.6838-21-rick.p.edgecombe@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221203003606.6838-1-rick.p.edgecombe@intel.com> References: <20221203003606.6838-1-rick.p.edgecombe@intel.com> X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751151400066027092?= X-GMAIL-MSGID: =?utf-8?q?1751151400066027092?= 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. Tested-by: Pengfei Xu Tested-by: John Allen Signed-off-by: Yu-cheng Yu Co-developed-by: Rick Edgecombe Signed-off-by: Rick Edgecombe Cc: Kees Cook Reviewed-by: Kees Cook --- 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/mmap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/mmap.c b/mm/mmap.c index 146388feb72b..7ce04d2d5a10 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -3295,6 +3295,8 @@ void vm_stat_account(struct mm_struct *mm, vm_flags_t flags, long npages) mm->exec_vm += npages; else if (is_stack_mapping(flags)) mm->stack_vm += npages; + else if (flags & VM_SHADOW_STACK) + mm->stack_vm += npages; else if (is_data_mapping(flags)) mm->data_vm += npages; }