From nobody Sun Sep 14 18:03:52 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 114F8C004D4 for ; Thu, 19 Jan 2023 21:37:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230061AbjASVhr (ORCPT ); Thu, 19 Jan 2023 16:37:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230500AbjASVfb (ORCPT ); Thu, 19 Jan 2023 16:35:31 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AA74A1024; Thu, 19 Jan 2023 13:27:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674163626; x=1705699626; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=Sqmbg6aViWSIuyH7MnUz0YCJC/oOzGtcIb7+8J/qX00=; b=lCqPhsz5Ligt4SU1XQzj7I8rtmx+ohVt4v+2Yjeefot2JPgXHGv7447r ecS8rKgKl6iQM9rH95Qxn9sWY5fLnOaOc7wC1P7N+ghAIjEpsCCPpWyMZ rX+GhueS+wgKabuxRQ0qpkFI0hHowWe8XfMhWD717+OopZTzF8FKa1PsO YJuV6bz0BQv+1MndopB2/1EkDKIU00OTPxp48kUcpLz8gUDjJQMC8jw21 GdeXpI7iej9QBGB7QwxXVbPC61lfc8TEDACLISeYTrHsubc9AWgM99Pe5 fLQe/7Wpw68nwphVrmYo8jJKhHZgFoFflVYNfU01d4TyInY3s8aQ6h2fj g==; X-IronPort-AV: E=McAfee;i="6500,9779,10595"; a="323119660" X-IronPort-AV: E=Sophos;i="5.97,230,1669104000"; d="scan'208";a="323119660" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2023 13:23:58 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10595"; a="989139099" X-IronPort-AV: E=Sophos;i="5.97,230,1669104000"; d="scan'208";a="989139099" Received: from hossain3-mobl.amr.corp.intel.com (HELO rpedgeco-desk.amr.corp.intel.com) ([10.252.128.187]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2023 13:23:57 -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 v5 21/39] mm/mmap: Add shadow stack pages to memory accounting Date: Thu, 19 Jan 2023 13:22:59 -0800 Message-Id: <20230119212317.8324-22-rick.p.edgecombe@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230119212317.8324-1-rick.p.edgecombe@intel.com> References: <20230119212317.8324-1-rick.p.edgecombe@intel.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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. Reviewed-by: Kees Cook 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 --- 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 425a9349e610..9f85596cce31 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -3290,6 +3290,8 @@ void vm_stat_account(struct mm_struct *mm, vm_flags_t= flags, long npages) mm->exec_vm +=3D npages; else if (is_stack_mapping(flags)) mm->stack_vm +=3D npages; + else if (flags & VM_SHADOW_STACK) + mm->stack_vm +=3D npages; else if (is_data_mapping(flags)) mm->data_vm +=3D npages; } --=20 2.17.1