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 3B55FD44162 for ; Tue, 19 Nov 2024 14:25:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4C9D6B008A; Tue, 19 Nov 2024 09:25:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BFB296B00A0; Tue, 19 Nov 2024 09:25:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AEAAB6B00A1; Tue, 19 Nov 2024 09:25:38 -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 932386B008A for ; Tue, 19 Nov 2024 09:25:38 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1657A804ED for ; Tue, 19 Nov 2024 14:25:38 +0000 (UTC) X-FDA: 82803065142.09.C6687B7 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf20.hostedemail.com (Postfix) with ESMTP id 7F67E1C000A for ; Tue, 19 Nov 2024 14:24:33 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=HisBlGZb; spf=pass (imf20.hostedemail.com: domain of gregkh@linuxfoundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732026092; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=8eT77vdlbfvqZVpusCFKyu9bfATSXjlRcRXLG1MJ5nk=; b=Ptm9p3MictL3ZxSnLSsQYOGwyyRB9slEh9r/b0gH0z2UMuh0efoqeSJ+EQuBQKGv4pv97O /x++/VPESwpu54SRZLrIpNSSy2iiO5HBkJDmyJb0ExD2vJAbUma/zcRX+2LucBqYENqF4J Pa+mhnk8o3X8Zcf+V7k64JGKlZBN13w= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=korg header.b=HisBlGZb; spf=pass (imf20.hostedemail.com: domain of gregkh@linuxfoundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732026092; a=rsa-sha256; cv=none; b=tsY/LhSTe5cfMcfz7/Em4s+q844SNP7h3UeQM1guo6hYkYFTh6Bj6uGxioVaSJGPRboIz6 oAj2W7HAIAe9wd6L+sYFxvOC3EYUIHp6jNFWf3cISanwTMqd0GsX01pVFxzpZiAgGeNOGC ZD0P1jA4bDjTBVjP3ojI21Y6iJBeWmQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 928FA5C0508; Tue, 19 Nov 2024 14:24:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 366B7C4CED0; Tue, 19 Nov 2024 14:25:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1732026335; bh=3+7O2uWI5N8Iwxpr11LIlWa9BTiFM44YDT6+PLlCCX4=; h=Subject:To:Cc:From:Date:In-Reply-To:From; b=HisBlGZb9FMlXzyyJkPUVeYH7jbVzDEbTL0ENGI320EPC+Yi8WHmE6q+q6STZGziV l89AciTNKiTVxApDI6M+4lTHxkjBolKeJB+6PgY2o47VWXmzmvsK6BIXsM5lEgP7Rw f57Y3TvM0aZ3VKYBIYryXvPqDsBsV/3T7ICMWQxM= Subject: Patch "mm: refactor arch_calc_vm_flag_bits() and arm64 MTE handling" has been added to the 5.15-stable tree To: James.Bottomley@HansenPartnership.com,Liam.Howlett@oracle.com,akpm@linux-foundation.org,andreas@gaisler.com,broonie@kernel.org,catalin.marinas@arm.com,davem@davemloft.net,deller@gmx.de,gregkh@linuxfoundation.org,jannh@google.com,linux-mm@kvack.org,lorenzo.stoakes@oracle.com,peterx@redhat.com,torvalds@linux-foundation.org,vbabka@suse.cz,will@kernel.org Cc: From: Date: Tue, 19 Nov 2024 15:25:03 +0100 In-Reply-To: <6dc9d6d69584a326d7de66da9cbaade9ec64e4fd.1731667436.git.lorenzo.stoakes@oracle.com> Message-ID: <2024111903-suspend-grafting-4074@gregkh> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit X-stable: commit X-Patchwork-Hint: ignore X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 7F67E1C000A X-Stat-Signature: 8j4be7wk3k5yhqm3w3ghd73quzjmwx4r X-Rspam-User: X-HE-Tag: 1732026273-550920 X-HE-Meta: U2FsdGVkX18olWLHDbbDC5c0+pF1txW5RyjeRs4Gt47N2VHnMIOMEQHKiepvzX3SZnyH/KUJT51QgmZEVIcfObn8JqkQV9bvr/b3jj0p7yT33Uv1Yw6pnkDvytWvM1gQ90iLbRAu1uwcZhRqvgcFck71YUHoCqJdQ91u16/yOsVe48gnU9tlu/3LmQtQKRyH0bBa5R+QTHzmyaxttNGHi1+lcaQ2E1cEKdc2Kf8E+uQFwJwipom+S0Ghu09S9KbcPcjwLXf2ovRdsjhAeoxzEFm2URFmLwEyXyBNxXQYVpXm5stOLTM0UCl+j9sgxZIajn1jrDJGgBoLKiFNvy2Z8bps98hc5vs02lc8T1CsnazOQSUVepvp+yqbiciOtEcPBWDiOwOmkghUtxpgP+aChnS6NwbcLJVyqtIemglwafLrI0LRxRQZnUfFa+QW0ClEdTGD1+mbVO3gdUvU7cBB9fQyLXXy/p3Y2YZbdJ0/STcH9PZMwne0hNCpeVHCRQ2y+dejAXPecuXzqgEWtrQTD3m65G8NI87i198slf8kARY+sI0qYeepB3iiMom2qhKQZjsFqYPt6CQX0cHM8XFMKMZTabBRppOGw1KWYEDvJKPrqFFiQKTvg1jtnMBI0Ef4unv12hxP2CJ++pbO0H3e+OTKkoDefMuAX3wDts0f1miEhhr53IeKWHdLrfriZMvP5mt6OcEDX7DUs0culh6D88LT3PEZNA/HAM9CEDeR6X4l/qOxHn+rHwEs2f8/6RuFwu0bztOdKeg2sH4oeGthGNrKfrFQHO2TDXEgkgUD6iAu8gxPCteFyHQY9bK615sbiiHhgbGnPeodVpv3UeY8uHgRayCPSU4Sv8qHgay5QwVwaOry9tOfpWuV1eR26HRU72T/Fj+Djv26MWdJQDefF2KmWqVtpMmVpYJorvKzyD/NTqMhJ6MM1gD87ZeEM2fDYm8zBszPfk372SMmy3V ak/0hbtv Aongl4hFaa3DpgStkIMuNaEelOYjfhjWuPNAdeAye+V8LBI7bEsq4UVc9HEKR1XrwuBrjIlsPdhLkOVl6sMflLPau/WDVMl6Wghlnk9PZ5EkrSVDoz13G1CYRXiqqUL+On+9MubbHGfwNbKbv5smDKooUY3nlEo04jVKHz+r4b5V9zebQY7z5BP+OkQdJ1x92cqB94tS601x56VrGL+JrHRT8XBA78roo5E6CX399wi7rx4maCuCr008YcCUM5V91xXnJdhmTbnWbD06JwKbEqEbGfH1PZeulMySZrMClw2/97PtabmzMX+wjew0QKh9DLNCEA8woSell0YMpEvuueF3girjfKHjbaMi/a4uoH27iPyrWADKEuBbtvNVejfO04VzE+/b88WzCaURTn233EssGgOq6ePpr3GZOuKNe9BBZk51Ze1ViT7nshgt009MDk3Ko2sqcqoX0FA46AYfgP7EdcRHRtsXGLILy7frIR8J5Wiexs7F/rPWhrHBKGFFJyMVtoeZqRA6I4xbW4FkcSCBG216cIsM5jKmzBb/N6yrGnB7Cp7hJhuf3cxqLebrkXE09C0prxYNoxt8XJoz24iaO4oZY7u0cP9kR0hvL/6CFGBPc1vMiJx1BBrXLB5z22GU3nBCTlHDzxdZIcu2A7nsFcrFxDhZP44D+LymPghmXi2pGHSrpQNPvksMkzqvLcu9mKzX2c/9f2N2ygYfhHZ4nH9ULPREyETT7Com0XYUCqVdXtWdJBoNjky54SangP54kH47ZsKs1h+xtVOB+W+Jmxag9+pgjdXg95V4bkNaft8oGHJxvd3uOu6wiSiP8WcCg91LG0uc1Ffoqn5v133NOLtG+3zNTGfafnBV8I2+KWnN4P4JJmVlU6WDW4UZ+ZaQ0ZpXRcigB4ZVhbt8CQsqIpw== 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: List-Subscribe: List-Unsubscribe: This is a note to let you know that I've just added the patch titled mm: refactor arch_calc_vm_flag_bits() and arm64 MTE handling to the 5.15-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: mm-refactor-arch_calc_vm_flag_bits-and-arm64-mte-handling.patch and it can be found in the queue-5.15 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >From stable+bounces-93527-greg=kroah.com@vger.kernel.org Fri Nov 15 13:39:59 2024 From: Lorenzo Stoakes Date: Fri, 15 Nov 2024 12:38:15 +0000 Subject: mm: refactor arch_calc_vm_flag_bits() and arm64 MTE handling To: stable@vger.kernel.org Cc: Andrew Morton , "Liam R . Howlett" , Vlastimil Babka , Jann Horn , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Linus Torvalds , Peter Xu , Catalin Marinas , Will Deacon , Mark Brown , "David S . Miller" , Andreas Larsson , "James E . J . Bottomley" , Helge Deller Message-ID: <6dc9d6d69584a326d7de66da9cbaade9ec64e4fd.1731667436.git.lorenzo.stoakes@oracle.com> From: Lorenzo Stoakes [ Upstream commit 5baf8b037debf4ec60108ccfeccb8636d1dbad81 ] Currently MTE is permitted in two circumstances (desiring to use MTE having been specified by the VM_MTE flag) - where MAP_ANONYMOUS is specified, as checked by arch_calc_vm_flag_bits() and actualised by setting the VM_MTE_ALLOWED flag, or if the file backing the mapping is shmem, in which case we set VM_MTE_ALLOWED in shmem_mmap() when the mmap hook is activated in mmap_region(). The function that checks that, if VM_MTE is set, VM_MTE_ALLOWED is also set is the arm64 implementation of arch_validate_flags(). Unfortunately, we intend to refactor mmap_region() to perform this check earlier, meaning that in the case of a shmem backing we will not have invoked shmem_mmap() yet, causing the mapping to fail spuriously. It is inappropriate to set this architecture-specific flag in general mm code anyway, so a sensible resolution of this issue is to instead move the check somewhere else. We resolve this by setting VM_MTE_ALLOWED much earlier in do_mmap(), via the arch_calc_vm_flag_bits() call. This is an appropriate place to do this as we already check for the MAP_ANONYMOUS case here, and the shmem file case is simply a variant of the same idea - we permit RAM-backed memory. This requires a modification to the arch_calc_vm_flag_bits() signature to pass in a pointer to the struct file associated with the mapping, however this is not too egregious as this is only used by two architectures anyway - arm64 and parisc. So this patch performs this adjustment and removes the unnecessary assignment of VM_MTE_ALLOWED in shmem_mmap(). [akpm@linux-foundation.org: fix whitespace, per Catalin] Link: https://lkml.kernel.org/r/ec251b20ba1964fb64cf1607d2ad80c47f3873df.1730224667.git.lorenzo.stoakes@oracle.com Fixes: deb0f6562884 ("mm/mmap: undo ->mmap() when arch_validate_flags() fails") Signed-off-by: Lorenzo Stoakes Suggested-by: Catalin Marinas Reported-by: Jann Horn Reviewed-by: Catalin Marinas Reviewed-by: Vlastimil Babka Cc: Andreas Larsson Cc: David S. Miller Cc: Helge Deller Cc: James E.J. Bottomley Cc: Liam R. Howlett Cc: Linus Torvalds Cc: Mark Brown Cc: Peter Xu Cc: Will Deacon Cc: Signed-off-by: Andrew Morton Signed-off-by: Lorenzo Stoakes Signed-off-by: Greg Kroah-Hartman --- arch/arm64/include/asm/mman.h | 10 +++++++--- include/linux/mman.h | 7 ++++--- mm/mmap.c | 2 +- mm/nommu.c | 2 +- mm/shmem.c | 3 --- 5 files changed, 13 insertions(+), 11 deletions(-) --- a/arch/arm64/include/asm/mman.h +++ b/arch/arm64/include/asm/mman.h @@ -3,6 +3,8 @@ #define __ASM_MMAN_H__ #include +#include +#include #include #include @@ -21,19 +23,21 @@ static inline unsigned long arch_calc_vm } #define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey) -static inline unsigned long arch_calc_vm_flag_bits(unsigned long flags) +static inline unsigned long arch_calc_vm_flag_bits(struct file *file, + unsigned long flags) { /* * Only allow MTE on anonymous mappings as these are guaranteed to be * backed by tags-capable memory. The vm_flags may be overridden by a * filesystem supporting MTE (RAM-based). */ - if (system_supports_mte() && (flags & MAP_ANONYMOUS)) + if (system_supports_mte() && + ((flags & MAP_ANONYMOUS) || shmem_file(file))) return VM_MTE_ALLOWED; return 0; } -#define arch_calc_vm_flag_bits(flags) arch_calc_vm_flag_bits(flags) +#define arch_calc_vm_flag_bits(file, flags) arch_calc_vm_flag_bits(file, flags) static inline pgprot_t arch_vm_get_page_prot(unsigned long vm_flags) { --- a/include/linux/mman.h +++ b/include/linux/mman.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MMAN_H #define _LINUX_MMAN_H +#include #include #include @@ -90,7 +91,7 @@ static inline void vm_unacct_memory(long #endif #ifndef arch_calc_vm_flag_bits -#define arch_calc_vm_flag_bits(flags) 0 +#define arch_calc_vm_flag_bits(file, flags) 0 #endif #ifndef arch_vm_get_page_prot @@ -151,12 +152,12 @@ calc_vm_prot_bits(unsigned long prot, un * Combine the mmap "flags" argument into "vm_flags" used internally. */ static inline unsigned long -calc_vm_flag_bits(unsigned long flags) +calc_vm_flag_bits(struct file *file, unsigned long flags) { return _calc_vm_trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN ) | _calc_vm_trans(flags, MAP_LOCKED, VM_LOCKED ) | _calc_vm_trans(flags, MAP_SYNC, VM_SYNC ) | - arch_calc_vm_flag_bits(flags); + arch_calc_vm_flag_bits(file, flags); } unsigned long vm_commit_limit(void); --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1466,7 +1466,7 @@ unsigned long do_mmap(struct file *file, * to. we assume access permissions have been handled by the open * of the memory object, so we don't do any here. */ - vm_flags = calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(flags) | + vm_flags = calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(file, flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; if (flags & MAP_LOCKED) --- a/mm/nommu.c +++ b/mm/nommu.c @@ -906,7 +906,7 @@ static unsigned long determine_vm_flags( { unsigned long vm_flags; - vm_flags = calc_vm_prot_bits(prot, 0) | calc_vm_flag_bits(flags); + vm_flags = calc_vm_prot_bits(prot, 0) | calc_vm_flag_bits(file, flags); /* vm_flags |= mm->def_flags; */ if (!(capabilities & NOMMU_MAP_DIRECT)) { --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2266,9 +2266,6 @@ static int shmem_mmap(struct file *file, if (ret) return ret; - /* arm64 - allow memory tagging on RAM-based files */ - vma->vm_flags |= VM_MTE_ALLOWED; - file_accessed(file); vma->vm_ops = &shmem_vm_ops; if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && Patches currently in stable-queue which might be from lorenzo.stoakes@oracle.com are queue-5.15/mm-resolve-faulty-mmap_region-error-path-behaviour.patch queue-5.15/mm-refactor-arch_calc_vm_flag_bits-and-arm64-mte-handling.patch queue-5.15/mm-unconditionally-close-vmas-on-error.patch queue-5.15/mm-avoid-unsafe-vma-hook-invocation-when-error-arises-on-mmap-hook.patch