All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: ljs@kernel.org
Cc: akpm@linux-foundation.org, david@kernel.org, jgg@ziepe.ca,
	jhubbard@nvidia.com, peterx@redhat.com, willy@infradead.org,
	jack@suse.cz, riel@surriel.com, liam@infradead.org,
	vbabka@kernel.org, harry@kernel.org, jannh@google.com,
	lance.yang@linux.dev, ziy@nvidia.com, matthew.brost@intel.com,
	joshua.hahnjy@gmail.com, byungchul@sk.com, gourry@gourry.net,
	ying.huang@linux.alibaba.com, apopple@nvidia.com,
	baolin.wang@linux.alibaba.com, nico.pache@linux.dev,
	ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org,
	usama.arif@linux.dev, kas@kernel.org, xu.xin@linux.dev,
	chengming.zhou@linux.dev, maddy@linux.ibm.com, npiggin@gmail.com,
	mpe@ellerman.id.au, chleroy@kernel.org, ritesh.list@gmail.com,
	sshegde@linux.ibm.com, pfalcato@suse.de, kasong@tencent.com,
	qi.zheng@linux.dev, shakeel.butt@linux.dev,
	axelrasmussen@google.com, yuanchu@google.com, weixugc@google.com,
	baoquan.he@linux.dev, rppt@kernel.org, surenb@google.com,
	mhocko@suse.com, leon@kernel.org, sj@kernel.org,
	rakie.kim@sk.com, rientjes@google.com, viro@zeniv.linux.org.uk,
	brauner@kernel.org, peterz@infradead.org, mingo@redhat.com,
	acme@kernel.org, namhyung@kernel.org, mark.rutland@arm.com,
	alexander.shishkin@linux.intel.com, jolsa@kernel.org,
	irogers@google.com, adrian.hunter@intel.com,
	james.clark@linaro.org, mhiramat@kernel.org, oleg@redhat.com,
	john.johansen@canonical.com, georgia.garcia@canonical.com,
	paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com,
	zohar@linux.ibm.com, roberto.sassu@huawei.com,
	dmitry.kasatkin@gmail.com, eric.snowberg@oracle.com,
	wufan@kernel.org, stephen.smalley.work@gmail.com,
	omosnacek@gmail.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org,
	damon@lists.linux.dev, linux-trace-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, apparmor@lists.ubuntu.com,
	linux-security-module@vger.kernel.org,
	linux-integrity@vger.kernel.org, selinux@vger.kernel.org
Subject: Re: [PATCH 09/13] fs/proc/task_mmu: convert VMA flag tests to use vma_flags_t
Date: Fri,  6 Nov 2026 14:59:25 +0800	[thread overview]
Message-ID: <20261106065925.50906-1-lance.yang@linux.dev> (raw)
In-Reply-To: <20261105-late-2026-vma-flags-v1-9-0d3cd15ab75f@kernel.org>


On Thu, Nov 05, 2026 at 09:31:00PM +0000, Lorenzo Stoakes (ARM) wrote:
>Replace use of the legacy vm_flags_t flags with vma_flags_t values where
>VMA flags are tested directly in /proc/$pid/[s]maps, pagemap, clear_refs
>and PROCMAP_QUERY.
>
>In replacing vm_flags_clear() (which takes the VMA write lock) with
>vma_clear_flags() (which does not) in clear_refs_write(), we explicitly
>write lock the VMA. The mmap write lock is already held at this point.
>
>The show_vma_header_prefix() and show_smap_vma_flags() output functions and
>the thp_vma_allowable_orders() call continue to use legacy flags for the
>time being.
>
>No functional change intended.
>
>Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
>---
> fs/proc/task_mmu.c | 43 ++++++++++++++++++++++---------------------
> 1 file changed, 22 insertions(+), 21 deletions(-)
>
>diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
>index 22361607020d..b6e8ef15e40e 100644
>--- a/fs/proc/task_mmu.c
>+++ b/fs/proc/task_mmu.c
>@@ -569,18 +569,18 @@ static struct vm_area_struct *query_matching_vma(struct proc_maps_locking_ctx *l
> 
> 	/* VMA permissions should satisfy query flags */
> 	if (flags & PROCMAP_QUERY_VMA_FLAGS) {
>-		u32 perm = 0;
>+		vma_flags_t perm = EMPTY_VMA_FLAGS;
> 
> 		if (flags & PROCMAP_QUERY_VMA_READABLE)
>-			perm |= VM_READ;
>+			vma_flags_set(&perm, VMA_READ_BIT);
> 		if (flags & PROCMAP_QUERY_VMA_WRITABLE)
>-			perm |= VM_WRITE;
>+			vma_flags_set(&perm, VMA_WRITE_BIT);
> 		if (flags & PROCMAP_QUERY_VMA_EXECUTABLE)
>-			perm |= VM_EXEC;
>+			vma_flags_set(&perm, VMA_EXEC_BIT);
> 		if (flags & PROCMAP_QUERY_VMA_SHARED)
>-			perm |= VM_MAYSHARE;
>+			vma_flags_set(&perm, VMA_MAYSHARE_BIT);
> 
>-		if ((vma->vm_flags & perm) != perm)
>+		if (!vma_test_all_mask(vma, perm))
> 			goto skip_vma;
> 	}
> 
>@@ -647,13 +647,13 @@ static int do_procmap_query(struct mm_struct *mm, void __user *uarg)
> 	karg.vma_end = vma->vm_end;
> 
> 	karg.vma_flags = 0;
>-	if (vma->vm_flags & VM_READ)
>+	if (vma_test(vma, VMA_READ_BIT))
> 		karg.vma_flags |= PROCMAP_QUERY_VMA_READABLE;
>-	if (vma->vm_flags & VM_WRITE)
>+	if (vma_test(vma, VMA_WRITE_BIT))
> 		karg.vma_flags |= PROCMAP_QUERY_VMA_WRITABLE;
>-	if (vma->vm_flags & VM_EXEC)
>+	if (vma_test(vma, VMA_EXEC_BIT))
> 		karg.vma_flags |= PROCMAP_QUERY_VMA_EXECUTABLE;
>-	if (vma->vm_flags & VM_MAYSHARE)
>+	if (vma_test(vma, VMA_MAYSHARE_BIT))
> 		karg.vma_flags |= PROCMAP_QUERY_VMA_SHARED;
> 
> 	karg.vma_page_size = vma_kernel_pagesize(vma);
>@@ -970,7 +970,7 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr,
> {
> 	struct mem_size_stats *mss = walk->private;
> 	struct vm_area_struct *vma = walk->vma;
>-	bool locked = !!(vma->vm_flags & VM_LOCKED);
>+	bool locked = vma_test(vma, VMA_LOCKED_BIT);
> 	struct page *page = NULL;
> 	bool present = false, young = false, dirty = false;
> 	pte_t ptent = ptep_get(pte);
>@@ -1017,7 +1017,7 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned long addr,
> {
> 	struct mem_size_stats *mss = walk->private;
> 	struct vm_area_struct *vma = walk->vma;
>-	bool locked = !!(vma->vm_flags & VM_LOCKED);
>+	bool locked = vma_test(vma, VMA_LOCKED_BIT);
> 	struct page *page = NULL;
> 	bool present = false;
> 	struct folio *folio;
>@@ -1728,7 +1728,7 @@ static int clear_refs_test_walk(unsigned long start, unsigned long end,
> 	struct clear_refs_private *cp = walk->private;
> 	struct vm_area_struct *vma = walk->vma;
> 
>-	if (vma->vm_flags & VM_PFNMAP)
>+	if (vma_test(vma, VMA_PFNMAP_BIT))
> 		return 1;
> 
> 	/*
>@@ -1798,9 +1798,10 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
> 
> 		if (type == CLEAR_REFS_SOFT_DIRTY) {
> 			for_each_vma(vmi, vma) {
>-				if (!(vma->vm_flags & VM_SOFTDIRTY))
>+				if (!vma_test(vma, VMA_SOFTDIRTY_BIT))
> 					continue;
>-				vm_flags_clear(vma, VM_SOFTDIRTY);

vm_flags_clear() still warns on VM_SOFTDIRTY when pgtable_supports_soft_dirty()
is false. Did you mean to drop that?

(Vaguely recall you weren't too keen on that warn, though I could be wrong.)

Otherwise, LGTM!

Reviewed-by: Lance Yang <lance.yang@linux.dev>

  parent reply	other threads:[~2026-11-06  6:59 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-05 21:30 [PATCH 00/13] mm: continue vma_flags_t conversion Lorenzo Stoakes (ARM)
2026-11-05 21:30 ` [PATCH 01/13] mm/gup: convert GUP code to use vma_flags_t Lorenzo Stoakes (ARM)
2026-11-05 21:38   ` sashiko-bot
2026-11-06  3:47   ` Barry Song
2026-11-06  5:47   ` Lance Yang
2026-11-09 13:32   ` David Hildenbrand
2026-11-05 21:30 ` [PATCH 02/13] mm/filemap: convert fault and readahead logic " Lorenzo Stoakes (ARM)
2026-11-05 21:41   ` sashiko-bot
2026-11-06 11:53     ` Lorenzo Stoakes (ARM)
2026-11-08  7:20       ` Barry Song
2026-11-08  7:42         ` Barry Song
2026-11-09 12:26           ` Lorenzo Stoakes (ARM)
2026-11-05 21:30 ` [PATCH 03/13] mm/rmap: convert remaining VMA flag tests " Lorenzo Stoakes (ARM)
2026-11-05 21:37   ` sashiko-bot
2026-11-06  3:04   ` Baolin Wang
2026-11-06  3:57   ` Barry Song
2026-11-06 11:21     ` Lorenzo Stoakes (ARM)
2026-11-06  5:54   ` Lance Yang
2026-11-09 13:31   ` David Hildenbrand
2026-11-05 21:30 ` [PATCH 04/13] mm/migrate: convert " Lorenzo Stoakes (ARM)
2026-11-05 21:39   ` sashiko-bot
2026-11-06  3:05   ` Baolin Wang
2026-11-06  4:10   ` Barry Song
2026-11-06  5:58   ` Lance Yang
2026-11-09 13:31   ` David Hildenbrand
2026-11-05 21:30 ` [PATCH 05/13] mm: convert THP " Lorenzo Stoakes (ARM)
2026-11-05 21:40   ` sashiko-bot
2026-11-06  3:07   ` Baolin Wang
2026-11-06  4:01   ` Barry Song
2026-11-06  6:03   ` Lance Yang
2026-11-06 14:36   ` David Hildenbrand (Arm)
2026-11-09 12:27     ` Lorenzo Stoakes (ARM)
2026-11-09 13:38   ` David Hildenbrand
2026-11-05 21:30 ` [PATCH 06/13] mm/ksm: convert " Lorenzo Stoakes (ARM)
2026-11-05 21:40   ` sashiko-bot
2026-11-06  6:09   ` Lance Yang
2026-11-06  7:42   ` Xu Xin (vivo)
2026-11-09 13:30   ` David Hildenbrand
2026-11-05 21:30 ` [PATCH 07/13] mm/madvise: convert madvise_vma_behavior() " Lorenzo Stoakes (ARM)
2026-11-05 21:43   ` sashiko-bot
2026-11-06  6:38   ` Lance Yang
2026-11-09 13:44   ` David Hildenbrand (Arm)
2026-11-09 14:10   ` David Hildenbrand (Arm)
2026-11-09 17:01     ` Lorenzo Stoakes (ARM)
2026-11-05 21:30 ` [PATCH 08/13] mm: convert miscellaneous VMA flag tests " Lorenzo Stoakes (ARM)
2026-11-05 21:43   ` sashiko-bot
2026-11-06  1:01   ` SJ Park
2026-11-06  6:40   ` Lance Yang
2026-11-09 13:45   ` David Hildenbrand (Arm)
2026-11-12  5:36   ` Gregory Price (Meta)
2026-11-05 21:31 ` [PATCH 09/13] fs/proc/task_mmu: convert " Lorenzo Stoakes (ARM)
2026-11-05 21:45   ` sashiko-bot
2026-11-06  6:59   ` Lance Yang [this message]
2026-11-06 10:46     ` Lorenzo Stoakes (ARM)
2026-11-05 21:31 ` [PATCH 10/13] fs/coredump: convert vma_dump_size() " Lorenzo Stoakes (ARM)
2026-11-05 21:44   ` sashiko-bot
2026-11-06  7:03   ` Lance Yang
2026-11-05 21:31 ` [PATCH 11/13] uprobes: convert VMA flag tests " Lorenzo Stoakes (ARM)
2026-11-05 21:44   ` sashiko-bot
2026-11-06  7:12   ` Lance Yang
2026-11-05 21:31 ` [PATCH 12/13] perf: " Lorenzo Stoakes (ARM)
2026-11-05 21:46   ` sashiko-bot
2026-11-06  7:45   ` Lance Yang
2026-11-05 21:31 ` [PATCH 13/13] security: " Lorenzo Stoakes (ARM)
2026-11-05 21:46   ` sashiko-bot
2026-11-05 23:17   ` Paul Moore
2026-11-06  1:22     ` Paul Moore
2026-11-06  2:13       ` Fan Wu
2026-11-06 10:13     ` Lorenzo Stoakes (ARM)
2026-11-06  7:51   ` Lance Yang
2026-11-06 14:35 ` [PATCH 00/13] mm: continue vma_flags_t conversion David Hildenbrand (Arm)
2026-11-06 15:22   ` Lorenzo Stoakes (ARM)
2026-11-07 19:26     ` David Hildenbrand (Arm)
2026-11-07 20:09       ` Lorenzo Stoakes (ARM)
2026-11-09 13:40         ` David Hildenbrand (Arm)
2026-11-09 17:44           ` Andrew Morton
2026-11-09 17:48             ` David Hildenbrand (Arm)
2026-11-09 17:50               ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261106065925.50906-1-lance.yang@linux.dev \
    --to=lance.yang@linux.dev \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=apopple@nvidia.com \
    --cc=apparmor@lists.ubuntu.com \
    --cc=axelrasmussen@google.com \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=baoquan.he@linux.dev \
    --cc=brauner@kernel.org \
    --cc=byungchul@sk.com \
    --cc=chengming.zhou@linux.dev \
    --cc=chleroy@kernel.org \
    --cc=damon@lists.linux.dev \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=dmitry.kasatkin@gmail.com \
    --cc=eric.snowberg@oracle.com \
    --cc=georgia.garcia@canonical.com \
    --cc=gourry@gourry.net \
    --cc=harry@kernel.org \
    --cc=irogers@google.com \
    --cc=jack@suse.cz \
    --cc=james.clark@linaro.org \
    --cc=jannh@google.com \
    --cc=jgg@ziepe.ca \
    --cc=jhubbard@nvidia.com \
    --cc=jmorris@namei.org \
    --cc=john.johansen@canonical.com \
    --cc=jolsa@kernel.org \
    --cc=joshua.hahnjy@gmail.com \
    --cc=kas@kernel.org \
    --cc=kasong@tencent.com \
    --cc=kvm@vger.kernel.org \
    --cc=leon@kernel.org \
    --cc=liam@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=ljs@kernel.org \
    --cc=maddy@linux.ibm.com \
    --cc=mark.rutland@arm.com \
    --cc=matthew.brost@intel.com \
    --cc=mhiramat@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=namhyung@kernel.org \
    --cc=nico.pache@linux.dev \
    --cc=npiggin@gmail.com \
    --cc=oleg@redhat.com \
    --cc=omosnacek@gmail.com \
    --cc=paul@paul-moore.com \
    --cc=peterx@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pfalcato@suse.de \
    --cc=qi.zheng@linux.dev \
    --cc=rakie.kim@sk.com \
    --cc=riel@surriel.com \
    --cc=rientjes@google.com \
    --cc=ritesh.list@gmail.com \
    --cc=roberto.sassu@huawei.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=selinux@vger.kernel.org \
    --cc=serge@hallyn.com \
    --cc=shakeel.butt@linux.dev \
    --cc=sj@kernel.org \
    --cc=sshegde@linux.ibm.com \
    --cc=stephen.smalley.work@gmail.com \
    --cc=surenb@google.com \
    --cc=usama.arif@linux.dev \
    --cc=vbabka@kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=weixugc@google.com \
    --cc=willy@infradead.org \
    --cc=wufan@kernel.org \
    --cc=xu.xin@linux.dev \
    --cc=ying.huang@linux.alibaba.com \
    --cc=yuanchu@google.com \
    --cc=ziy@nvidia.com \
    --cc=zohar@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.