linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/mremap: fix regression in vrm->new_addr check
@ 2025-08-28  3:26 Carlos Llamas
  2025-08-28  3:43 ` Liam R. Howlett
  2025-08-28  5:38 ` Lorenzo Stoakes
  0 siblings, 2 replies; 13+ messages in thread
From: Carlos Llamas @ 2025-08-28  3:26 UTC (permalink / raw)
  To: Andrew Morton, Liam R. Howlett, Lorenzo Stoakes, Vlastimil Babka,
	Jann Horn, Pedro Falcato
  Cc: kernel-team, linux-kernel, Carlos Llamas,
	open list:MEMORY MAPPING

Commit 3215eaceca87 ("mm/mremap: refactor initial parameter sanity
checks") moved the sanity check for vrm->new_addr from mremap_to() to
check_mremap_params().

However, this caused a regression as vrm->new_addr is now checked even
when MREMAP_FIXED and MREMAP_DONTUNMAP flags are not specified. In this
case, vrm->new_addr can be garbage and create unexpected failures.

Fix this by moving the new_addr check after the vrm_implies_new_addr()
guard. This ensures that the new_addr is only checked when the user has
specified one explicitly.

Fixes: 3215eaceca87 ("mm/mremap: refactor initial parameter sanity checks")
Signed-off-by: Carlos Llamas <cmllamas@google.com>
---
 mm/mremap.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/mm/mremap.c b/mm/mremap.c
index e618a706aff5..692acb0f9ea2 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -1771,18 +1771,17 @@ static unsigned long check_mremap_params(struct vma_remap_struct *vrm)
 	 * for DOS-emu "duplicate shm area" thing. But
 	 * a zero new-len is nonsensical.
 	 */
-	if (!vrm->new_len)
-		return -EINVAL;
-
-	/* Is the new length or address silly? */
-	if (vrm->new_len > TASK_SIZE ||
-	    vrm->new_addr > TASK_SIZE - vrm->new_len)
+	if (!vrm->new_len || vrm->new_len > TASK_SIZE)
 		return -EINVAL;
 
 	/* Remainder of checks are for cases with specific new_addr. */
 	if (!vrm_implies_new_addr(vrm))
 		return 0;
 
+	/* Is the new address silly? */
+	if (vrm->new_addr > TASK_SIZE - vrm->new_len)
+		return -EINVAL;
+
 	/* The new address must be page-aligned. */
 	if (offset_in_page(vrm->new_addr))
 		return -EINVAL;
-- 
2.51.0.268.g9569e192d0-goog



^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-08-28 14:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-28  3:26 [PATCH] mm/mremap: fix regression in vrm->new_addr check Carlos Llamas
2025-08-28  3:43 ` Liam R. Howlett
2025-08-28  4:06   ` Carlos Llamas
2025-08-28  4:16     ` Carlos Llamas
2025-08-28  5:38 ` Lorenzo Stoakes
2025-08-28 14:13   ` Carlos Llamas
2025-08-28 14:21   ` Vlastimil Babka
2025-08-28 14:22     ` Lorenzo Stoakes
2025-08-28 14:29       ` Carlos Llamas
2025-08-28 14:31         ` Vlastimil Babka
2025-08-28 14:26   ` [PATCH v2] " Carlos Llamas
2025-08-28 14:30     ` Vlastimil Babka
2025-08-28 14:34     ` Lorenzo Stoakes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).