Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH v3 01/10] mm/kmsan: undo the shadow mapping when the origin mapping fails
       [not found] <20261026080329.140244-1-hao.ge@linux.dev>
@ 2026-10-26  8:03 ` Hao Ge
  0 siblings, 0 replies; only message in thread
From: Hao Ge @ 2026-10-26  8:03 UTC (permalink / raw)
  To: Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin,
	Christophe Leroy (CS GROUP), Ritesh Harjani (IBM),
	Shrikanth Hegde, Alexander Potapenko, Marco Elver, Dmitry Vyukov,
	Andrew Morton, Dennis Zhou, Tejun Heo, Christoph Lameter,
	Uladzislau Rezki, Hao Ge, Suren Baghdasaryan, Dev Jain
  Cc: linuxppc-dev, linux-kernel, kasan-dev, linux-mm, stable

kmsan_vmap_pages_range_noflush() first maps the shadow pages and then
the origin pages. If the second mapping fails, the first one is left
mapped, and the callers do not roll it back. The next vmap of the
same metadata range hits the stale PTEs again and BUG()s on the huge
mapping path, or gets -EBUSY with a WARN_ON() on the small page one.

Undo the shadow mapping on that error path, the same way
kmsan_ioremap_page_range() cleans up after a partial failure.
__vunmap_range_noflush() only clears the PTEs; nothing has touched
the shadow mapping, so no TLB flush is needed.

Fixes: 47ebd0310e89 ("mm: kmsan: handle alloc failures in kmsan_vmap_pages_range_noflush()")
Cc: stable@vger.kernel.org
Reviewed-by: Suren Baghdasaryan <surenb@google.com>
Reviewed-by: Dev Jain <dev.jain@arm.com>
Signed-off-by: Hao Ge <hao.ge@linux.dev>
---
 mm/kmsan/shadow.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mm/kmsan/shadow.c b/mm/kmsan/shadow.c
index 0c88d89bf0d6..2166086d3dc3 100644
--- a/mm/kmsan/shadow.c
+++ b/mm/kmsan/shadow.c
@@ -258,6 +258,10 @@ int kmsan_vmap_pages_range_noflush(unsigned long start, unsigned long end,
 					    o_pages, page_shift);
 	kmsan_leave_runtime();
 	if (mapped) {
+		/* Undo the shadow mapping set up above. */
+		kmsan_enter_runtime();
+		__vunmap_range_noflush(shadow_start, shadow_end);
+		kmsan_leave_runtime();
 		err = mapped;
 		goto ret;
 	}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-10-26  8:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20261026080329.140244-1-hao.ge@linux.dev>
2026-10-26  8:03 ` [PATCH v3 01/10] mm/kmsan: undo the shadow mapping when the origin mapping fails Hao Ge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox