All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Cc: selinux@vger.kernel.org, "Vasily Gorbik" <gor@linux.ibm.com>,
	"Heiko Carstens" <hca@linux.ibm.com>,
	"Alexander Gordeev" <agordeev@linux.ibm.com>,
	"Marc Zyngier" <maz@kernel.org>,
	linux-s390@vger.kernel.org, linux-rdma@vger.kernel.org,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	linux-scsi@vger.kernel.org, dri-devel@lists.freedesktop.org,
	bpf@vger.kernel.org, kvm@vger.kernel.org,
	linux-trace-kernel@vger.kernel.org,
	"Oliver Upton" <oupton@kernel.org>,
	linux-perf-users@vger.kernel.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v2 05/40] mm/vma: ensure mmap_prepare doesn't set actions on a mergeable vma
Date: Mon, 14 Sep 2026 16:45:16 +0000	[thread overview]
Message-ID: <20260914164517.61A411F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260914-b4-mmap-prepare-vma-flag-sanify-v2-5-7d9781ed5361@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Critical] State modification applied to `desc->vma_flags` during action preparation is not propagated back to `map->vma_flags`, resulting in incorrect VMA merging and the silent loss of critical flags like `VM_PFNMAP` and `VM_IO`.
--

commit 31f214221abd5db93fe1f46874d29ea3c59a0cc7
Author: Lorenzo Stoakes (ARM) <ljs@kernel.org>

mm/vma: ensure mmap_prepare doesn't set actions on a mergeable vma

When a user requests an mmap_action be performed in mmap_prepare, this
involves populating the VMA range with data. This patch asserts that no
future mmap action is performed on a mergeable VMA upon mmap_prepare
validation.

> diff --git a/mm/vma.c b/mm/vma.c
> index 626a18c08a269..2648fb0e19959 100644
> --- a/mm/vma.c
> +++ b/mm/vma.c
> @@ -2809,6 +2809,15 @@ static int mmap_validate(unsigned long prev_start,
>  int mmap_prepare_validate(const struct vm_area_desc *prev_desc,
>  			  const struct vm_area_desc *desc)
>  {
> +	/*
> +	 * It is not valid to execute mmap actions for VMAs which can be merged,
> +	 * as any such merge would leave portions of the mapping incorrectly
> +	 * unmapped.
> +	 */
> +	if (vma_flags_can_merge(&desc->vma_flags) &&
> +	    WARN_ON_ONCE(desc->action.type != MMAP_NOTHING))
> +		return -EINVAL;
> +

[Severity: Critical]
Does this check actually prevent the merge? Looking at call_mmap_prepare(),
map->vma_flags is copied from desc->vma_flags before call_action_prepare()
is called:

mm/vma.c:call_mmap_prepare() {
	...
	map->vma_flags = desc->vma_flags;
	...
	err = call_action_prepare(map, desc);
	if (err)
		return err;

	err = mmap_prepare_validate(&prev_desc, desc);
	...
}

If call_action_prepare() mutates desc->vma_flags to include action-specific
unmergeable flags, vma_flags_can_merge(&desc->vma_flags) will be false here,
allowing the validation to pass. However, these changes don't appear to be
synchronized back to map->vma_flags.

Could this cause the actual VMA operations to operate on the stale and
mergeable map->vma_flags?

If a VMA lacks VM_PFNMAP or VM_IO but contains PFN-mapped pages, could this
lead to memory corruption if kernel mechanisms assume the pages are normal
memory and call put_page() on raw PFNs?

>  	return mmap_validate(prev_desc->start, desc->start,
>  			     &prev_desc->vma_flags, &desc->vma_flags);
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914-b4-mmap-prepare-vma-flag-sanify-v2-0-7d9781ed5361@kernel.org?part=5

  reply	other threads:[~2026-09-14 16:45 UTC|newest]

Thread overview: 209+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14 14:57 [PATCH v2 00/40] mm: make VMA flag semantics explicit, eliminate VM_SPECIAL Lorenzo Stoakes (ARM)
2026-09-14 14:57 ` Lorenzo Stoakes (ARM)
2026-09-14 14:57 ` Lorenzo Stoakes (ARM)
2026-09-14 14:57 ` [PATCH v2 01/40] mm/vma: fix mmap_prepare file handling, remove file_doesnt_need_get Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 15:40   ` sashiko-bot
2026-09-17  9:33   ` Mike Rapoport
2026-09-17  9:33     ` Mike Rapoport
2026-09-17  9:33     ` Mike Rapoport
2026-09-17  9:57     ` Lorenzo Stoakes (ARM)
2026-09-17  9:57       ` Lorenzo Stoakes (ARM)
2026-09-17  9:57       ` Lorenzo Stoakes (ARM)
2026-09-17 11:40       ` Lorenzo Stoakes (ARM)
2026-09-17 11:40         ` Lorenzo Stoakes (ARM)
2026-09-17 11:40         ` Lorenzo Stoakes (ARM)
2026-09-18 12:57     ` Breno Leitao
2026-09-18 12:57       ` Breno Leitao
2026-09-18 12:57       ` Breno Leitao
2026-09-18 13:20       ` Lorenzo Stoakes (ARM)
2026-09-18 13:20         ` Lorenzo Stoakes (ARM)
2026-09-18 13:20         ` Lorenzo Stoakes (ARM)
2026-09-18 14:28         ` Breno Leitao
2026-09-18 14:28           ` Breno Leitao
2026-09-18 14:28           ` Breno Leitao
2026-09-14 14:57 ` [PATCH v2 02/40] mm/vma: predicate setting mmap_prepare VMA fields on new vma alloc Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 15:55   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 03/40] mm/vma: introduce and use vma_[flags_]can_merge() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 15:59   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 04/40] mm: consistently validate VMA state after mmap[_prepare] hooks Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 16:18   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 05/40] mm/vma: ensure mmap_prepare doesn't set actions on a mergeable vma Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 16:45   ` sashiko-bot [this message]
2026-09-14 14:57 ` [PATCH v2 06/40] mm: make map_kernel_pages_[prepare,complete] internal and unexported Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 16:47   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 07/40] mm/vma: tidy up map kernel pages enum values Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 16:50   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 08/40] mm: add mmap action for discontiguous kernel page mapping Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 17:03   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 09/40] docs: filesystems: update mmap_prepare docs for discontig kernel pgs Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 17:07   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 10/40] drivers/usb/mon: update to use mmap_prepare + map kernel pages Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 17:18   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 11/40] infiniband: update hfi1 to use remap_vmalloc_range() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 17:39   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 12/40] selinux: reject writable opens of policy file, drop mmap shared/write check Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 17:57   ` sashiko-bot
2026-09-14 19:57   ` Paul Moore
2026-09-14 19:57     ` Paul Moore
2026-09-14 19:57     ` Paul Moore
2026-09-14 14:57 ` [PATCH v2 13/40] ALSA: pcm: use vm_insert_page() to map PCM status page Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 18:30   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 14/40] bpf: arena: mark arena_map_mmap() mappings VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 18:46   ` sashiko-bot
2026-09-14 23:17   ` Emil Tsalapatis
2026-09-14 14:57 ` [PATCH v2 15/40] mm/vma: add vma[_flags]_is_kernel_owned() predicates Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 18:50   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 16/40] mm/vma: only allow mmap to clear VMA_MAYWRITE_BIT if kernel-owned Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 19:14   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 17/40] mm/vma: add and use vma_[flags]_is_fixed_mapping Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 19:24   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 18/40] scsi: sg: convert mmap hook to mmap_prepare and rework Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 19:30   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 19/40] fbdev: defio: assert FBINFO_VIRTFB, drop VM_IO, add VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 19:44   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 20/40] HSI: cmt_speech: convert mmap hook to mmap_prepare, refactor Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 20:15   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 21/40] mm/gup: error out early on !VMA_MAYREAD_BIT VMAs Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 20:33   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 22/40] uprobes: remove VM_IO, set VM_MIXEDMAP for mapped kernel pages Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 20:47   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 23/40] mm/mlock: clear VMA_LOCKED_MASK over mmap callback Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 21:09   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 24/40] mm/mlock: eliminate weird VMA_IO_BIT abuse and simplify Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 21:44   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 25/40] mm/vma: enforce that only kernel-owned mappings may set VMA_IO_BIT Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:18   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 26/40] mm: remove VMA_IO_BIT check in vma[_flags]_is_kernel_owned() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:09   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 27/40] mm: remove hugetlb_inline.h Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:09   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 28/40] mm: rename is_vm_hugetlb_page() to vma_is_hugetlb() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57 ` [PATCH v2 29/40] mm: drop some redundant checks around hugetlb VMAs Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:08   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 30/40] mm/madvise: update is_valid_guard_vma() to use vma_can_merge() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:14   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 31/40] mm/vma: introduce vma[_flags]_is_persistent() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:12   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 32/40] mm/uffd: use predicates for userfaultfd checks Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:16   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 33/40] mm/madvise: use predicates for madvise(..., MADV_DOFORK) Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:18   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 34/40] mm: eliminate VMA_SPECIAL_FLAGS usage when hugetlb explicitly tested Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:21   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 35/40] mm: eliminate VMA_SPECIAL_FLAGS check in lru_gen_look_around() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:22   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 36/40] mm: avoid use of VMA_SPECIAL_FLAGS in migrate_vma_setup() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:23   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 37/40] mm: eliminate VM_SPECIAL, VMA_SPECIAL_FLAGS Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:19   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 38/40] fuse: dax: do not set VM_MIXEDMAP Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:30   ` sashiko-bot
2026-09-14 14:57 ` [PATCH v2 39/40] mm/huge_memory: remove vma_is_special_huge() Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 14:57   ` Lorenzo Stoakes (ARM)
2026-09-14 22:26   ` sashiko-bot
2026-09-14 14:58 ` [PATCH v2 40/40] mm/vma: introduce and use vma[_flags]_can_gup() Lorenzo Stoakes (ARM)
2026-09-14 14:58   ` Lorenzo Stoakes (ARM)
2026-09-14 14:58   ` Lorenzo Stoakes (ARM)
2026-09-14 22:25   ` sashiko-bot
2026-09-15  1:08 ` [PATCH v2 00/40] mm: make VMA flag semantics explicit, eliminate VM_SPECIAL Andrew Morton
2026-09-15  1:08   ` Andrew Morton
2026-09-15  1:08   ` Andrew Morton
2026-09-15  8:35   ` Lorenzo Stoakes (ARM)
2026-09-18 20:20   ` David Hildenbrand (Arm)
2026-09-18 20:20     ` David Hildenbrand (Arm)
2026-09-18 20:20     ` David Hildenbrand (Arm)
2026-09-18 20:31     ` Suren Baghdasaryan
2026-09-18 20:31       ` Suren Baghdasaryan
2026-09-18 20:31       ` Suren Baghdasaryan
2026-09-19 15:05       ` Lorenzo Stoakes (ARM)
2026-09-19 15:05         ` Lorenzo Stoakes (ARM)
2026-09-19 15:05         ` Lorenzo Stoakes (ARM)
2026-09-19 15:09         ` Lorenzo Stoakes (ARM)
2026-09-19 15:09           ` Lorenzo Stoakes (ARM)
2026-09-19 15:09           ` Lorenzo Stoakes (ARM)
2026-09-23  8:13           ` Lorenzo Stoakes (ARM)
2026-09-23  8:13             ` Lorenzo Stoakes (ARM)
2026-09-23  8:13             ` Lorenzo Stoakes (ARM)
2026-09-23  8:39             ` David Hildenbrand (Arm)
2026-09-23  8:39               ` David Hildenbrand (Arm)
2026-09-23  8:39               ` David Hildenbrand (Arm)
2026-09-23 14:31               ` Suren Baghdasaryan
2026-09-23 14:31                 ` Suren Baghdasaryan
2026-09-23 14:31                 ` Suren Baghdasaryan

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=20260914164517.61A411F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=bpf@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=ljs@kernel.org \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=selinux@vger.kernel.org \
    /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.