From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: sashiko-reviews@lists.linux.dev
Cc: "David Hildenbrand" <david@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Mike Rapoport" <rppt@kernel.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Michal Hocko" <mhocko@suse.com>,
"David Rientjes" <rientjes@google.com>,
"Shakeel Butt" <shakeel.butt@linux.dev>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Jann Horn" <jannh@google.com>,
"Pedro Falcato" <pfalcato@suse.de>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
"Jan Kara" <jack@suse.cz>, "Nhat Pham" <nphamcs@gmail.com>,
"Johannes Weiner" <hannes@cmpxchg.org>, "Zi Yan" <ziy@nvidia.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Joshua Hahn" <joshua.hahnjy@gmail.com>,
"Byungchul Park" <byungchul@sk.com>,
"Gregory Price" <gourry@gourry.net>,
"Ying Huang" <ying.huang@linux.alibaba.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Usama Arif" <usama.arif@linux.dev>,
"Kairui Song" <kasong@tencent.com>,
"Balbir Singh" <balbirs@nvidia.com>,
"Jérôme Glisse" <jglisse@redhat.com>,
"Kiryl Shutsemau" <kas@kernel.org>,
"Yu-cheng Yu" <yu-cheng.yu@intel.com>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
"Dennis Zhou" <dennis@kernel.org>, "Tejun Heo" <tj@kernel.org>,
"Christoph Lameter" <cl@gentwo.org>,
"Peng Fan" <peng.fan@nxp.com>, "Josef Bacik" <jbacik@fb.com>,
"Chris Mason" <mason@kernel.org>,
linux-mm@kvack.org, "Borislav Petkov (AMD)" <bp@alien8.de>,
"Mark Brown" <broonie@kernel.org>,
"Dennis Zhou (Facebook)" <dennisszhou@gmail.com>,
"Rick Edgecombe" <rick.p.edgecombe@intel.com>,
"Roman Gushchin" <roman.gushchin@linux.dev>
Subject: Re: [PATCH 10/13] mm/migrate_device: refuse to migrate shadow stacks
Date: Thu, 12 Nov 2026 19:03:13 +0000 [thread overview]
Message-ID: <avYJ-CxBEpdO1Wmu@gremlin> (raw)
In-Reply-To: <sashiko-outbox-211681@kernel.org>
+cc Roman
Roman - see below - I was under the impression mm was not supposed to receive
'unrelated to this patch but' reports? Did something change?
Thanks!
On Thu, Nov 12, 2026 at 06:16:31PM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found no new issues
> in this patch, but noticed 1 related pre-existing issue it does not
> introduce:
> - [Critical] mm: out-of-bounds write in migrate_vma_setup() [1]
> --
>
> commit a0bf8430c5e68cd904038ab8081c7bc9a9b0f7de
> Author: Chris Mason <mason@kernel.org>
>
> mm/migrate_device: refuse to migrate shadow stacks
>
> This commit rejects VMA device migration in migrate_vma_setup() when the VMA
> has VMA_SHADOW_STACK set.
>
> > diff --git a/mm/migrate_device.c b/mm/migrate_device.c
> > index 0f2a2832e0bd1..c27f513ee46e3 100644
> > --- a/mm/migrate_device.c
> > +++ b/mm/migrate_device.c
> > @@ -759,6 +759,8 @@ int migrate_vma_setup(struct migrate_vma *args)
> > /* The migrate_vma page walk has no hugetlb support. */
> > if (!vma_is_mm_backed(vma) || vma_is_hugetlb(vma) || vma_is_dax(vma))
> > return -EINVAL;
> > + if (vma_test_single_mask(vma, VMA_SHADOW_STACK))
> > + return -EINVAL;
> > if (nr_pages <= 0)
> > return -EINVAL;
> > if (args->start < vma->vm_start || args->start >= vma->vm_end)
>
> [Severity: Critical]
> This problem wasn't introduced by this patch, but can migrate_vma_setup()
> write out of bounds on args->src and args->dst when given unaligned
> addresses [1]?
I don't like big buts and I can deny! As above, I thought we disabled this?
>
> mm/migrate_device.c:migrate_vma_setup() {
> const struct vm_area_struct *vma = args->vma;
> long nr_pages = (args->end - args->start) >> PAGE_SHIFT;
>
> args->start &= PAGE_MASK;
> args->end &= PAGE_MASK;
> ...
> }
>
> nr_pages is computed before args->start and args->end are masked with
> PAGE_MASK. For example, if args->start is 0x1fff and args->end is 0x3001,
> nr_pages is 1, but masking rounds the range to [0x1000, 0x3000), which spans
> 2 pages. When migrate_vma_collect() walks the aligned range, it writes past
> the end of the caller's args->src and args->dst arrays.
This is silly. It's not critical. Nothing in-tree does this.
If internal kernel stuff does incredibly stupid things then incredibly stupid
things happen. We can't nanny everything endlessly.
A monolithic kernel means that the function and its callers are considered
together.
If an out-of-tree module does it then it's your fault for using an out-of-tree
module (ugh EXPORT_SYMBOL()'d).
>
> [1] https://sashiko.dev/#/bug/linux-ca91ac03-4056-4cf8-8afb-0e516e08797f
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20261111-mason-migrate-et-al-fixes-v1-0-3d2454362e8d@kernel.org?part=10
--
Cheers, Lorenzo
next prev parent reply other threads:[~2026-11-12 19:03 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 18:13 [PATCH 00/13] mm: batch of (urgentish?) fixes in oomk, cachestat, dev-migrate, percpu Lorenzo Stoakes (ARM)
2026-11-11 18:13 ` [PATCH 01/13] mm/mmap: free gathered pages before MMF_OOM_SKIP Lorenzo Stoakes (ARM)
2026-11-11 22:49 ` Usama Arif
2026-11-12 12:18 ` Lorenzo Stoakes (ARM)
2026-11-12 11:21 ` Pedro Falcato
2026-11-12 12:17 ` Lorenzo Stoakes (ARM)
2026-11-12 12:18 ` Lorenzo Stoakes (ARM)
2026-11-12 12:28 ` Pedro Falcato
2026-11-12 12:33 ` Lorenzo Stoakes (ARM)
2026-11-12 11:43 ` Michal Hocko
2026-11-12 12:14 ` Lorenzo Stoakes (ARM)
2026-11-12 12:48 ` Michal Hocko
2026-11-12 14:12 ` Michal Hocko
2026-11-12 14:27 ` Lorenzo Stoakes (ARM)
2026-11-12 16:59 ` Gregory Price (Meta)
2026-11-12 19:15 ` Lorenzo Stoakes (ARM)
2026-11-11 18:13 ` [PATCH 02/13] mm: cachestat: count each page only once Lorenzo Stoakes (ARM)
2026-11-11 23:26 ` Usama Arif
2026-11-12 11:27 ` Pedro Falcato
2026-11-12 13:30 ` Nhat Pham
2026-11-12 16:13 ` Johannes Weiner
2026-11-12 16:37 ` Gregory Price (Meta)
2026-11-11 18:13 ` [PATCH 03/13] mm: cachestat: restart the walk after each entry Lorenzo Stoakes (ARM)
2026-11-11 23:38 ` Usama Arif
2026-11-12 12:22 ` Lorenzo Stoakes (ARM)
2026-11-12 11:29 ` Pedro Falcato
2026-11-12 12:33 ` Nhat Pham
2026-11-12 16:15 ` Johannes Weiner
2026-11-12 16:40 ` Gregory Price (Meta)
2026-11-11 18:13 ` [PATCH 04/13] mm/migrate_device: allocate THP deferred split heads Lorenzo Stoakes (ARM)
2026-11-11 19:30 ` Kiryl Shutsemau
2026-11-11 19:40 ` David Hildenbrand (Arm)
2026-11-11 22:18 ` Andrew Morton
2026-11-11 23:02 ` Balbir Singh
2026-11-12 17:07 ` Gregory Price (Meta)
2026-11-12 18:16 ` sashiko-bot
2026-11-11 18:13 ` [PATCH 05/13] mm/migrate_device: don't collect a range twice Lorenzo Stoakes (ARM)
2026-11-12 17:15 ` Gregory Price (Meta)
2026-11-12 18:16 ` sashiko-bot
2026-11-11 18:13 ` [PATCH 06/13] mm/migrate_device: don't let go of the fault page Lorenzo Stoakes (ARM)
2026-11-12 17:56 ` Gregory Price (Meta)
2026-11-11 18:13 ` [PATCH 07/13] mm/migrate_device: look up fault folio after a split Lorenzo Stoakes (ARM)
2026-11-12 17:35 ` Gregory Price (Meta)
2026-11-12 19:12 ` Lorenzo Stoakes (ARM)
2026-11-11 18:13 ` [PATCH 08/13] mm/migrate_device: fix ksmd oops on a migrated KSM page Lorenzo Stoakes (ARM)
2026-11-11 21:54 ` David Hildenbrand (Arm)
2026-11-11 22:47 ` Alistair Popple
2026-11-11 23:27 ` Balbir Singh
2026-11-12 17:22 ` Gregory Price (Meta)
2026-11-12 18:16 ` sashiko-bot
2026-11-11 18:13 ` [PATCH 09/13] mm/migrate_device: fix use-after-free of the anon rmap Lorenzo Stoakes (ARM)
2026-11-11 23:04 ` Alistair Popple
2026-11-12 19:05 ` Lorenzo Stoakes (ARM)
2026-11-12 18:11 ` Gregory Price (Meta)
2026-11-12 19:10 ` Lorenzo Stoakes (ARM)
2026-11-12 18:16 ` sashiko-bot
2026-11-11 18:13 ` [PATCH 10/13] mm/migrate_device: refuse to migrate shadow stacks Lorenzo Stoakes (ARM)
2026-11-11 21:15 ` Balbir Singh
2026-11-11 23:15 ` Alistair Popple
2026-11-12 18:16 ` sashiko-bot
2026-11-12 19:03 ` Lorenzo Stoakes (ARM) [this message]
2026-11-12 22:53 ` Roman Gushchin
2026-11-13 0:22 ` Roman Gushchin
2026-11-11 18:13 ` [PATCH 11/13] percpu: fix contig hints that are too low Lorenzo Stoakes (ARM)
2026-11-12 18:30 ` Gregory Price (Meta)
2026-11-11 18:13 ` [PATCH 12/13] percpu: search the whole reserved chunk Lorenzo Stoakes (ARM)
2026-11-12 18:33 ` Gregory Price (Meta)
2026-11-11 18:13 ` [PATCH 13/13] percpu: queue the balance work on an unbound workqueue Lorenzo Stoakes (ARM)
2026-11-12 18:41 ` Gregory Price (Meta)
2026-11-12 18:45 ` Lorenzo Stoakes (ARM)
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=avYJ-CxBEpdO1Wmu@gremlin \
--to=ljs@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=apopple@nvidia.com \
--cc=balbirs@nvidia.com \
--cc=bp@alien8.de \
--cc=broonie@kernel.org \
--cc=byungchul@sk.com \
--cc=cl@gentwo.org \
--cc=dave.hansen@linux.intel.com \
--cc=david@kernel.org \
--cc=dennis@kernel.org \
--cc=dennisszhou@gmail.com \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=jack@suse.cz \
--cc=jannh@google.com \
--cc=jbacik@fb.com \
--cc=jglisse@redhat.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kas@kernel.org \
--cc=kasong@tencent.com \
--cc=liam@infradead.org \
--cc=linux-mm@kvack.org \
--cc=mason@kernel.org \
--cc=matthew.brost@intel.com \
--cc=mhocko@suse.com \
--cc=nphamcs@gmail.com \
--cc=peng.fan@nxp.com \
--cc=pfalcato@suse.de \
--cc=rick.p.edgecombe@intel.com \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=rppt@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=surenb@google.com \
--cc=tj@kernel.org \
--cc=usama.arif@linux.dev \
--cc=vbabka@kernel.org \
--cc=willy@infradead.org \
--cc=ying.huang@linux.alibaba.com \
--cc=yu-cheng.yu@intel.com \
--cc=ziy@nvidia.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.