mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] x86/mm/pat: Don't leak reservations at the physical address limit
@ 2026-11-08  5:25 Chris Down
  0 siblings, 0 replies; only message in thread
From: Chris Down @ 2026-11-08  5:25 UTC (permalink / raw)
  To: Dave Hansen, Andy Lutomirski, Peter Zijlstra, Borislav Petkov, x86
  Cc: Thomas Gleixner, Ingo Molnar, H. Peter Anvin, Jeff Moyer,
	linux-kernel, kernel-team, stable

memtype_reserve() and memtype_free() pass their physical addresses
through sanitize_phys(). Both take an exclusive end address, but
sanitize_phys() expects an inclusive one.

So this has the effect that for a range that ends exactly at the top of
the physical address space, the mask turns the end into 0.

As a result the ISA range check succeeds and memtype_free() returns 0
without removing the reservation. A new reservation that overlaps
existing entries takes on their memory type, so the stale entry goes on
choosing the cache mode for that range.

Let's fix this by doing some annoying off by one twiddling.

Fixes: aeef8b5089b7 ("x86/pat: Pass valid address to sanitize_phys()")
Cc: <stable@vger.kernel.org>
Signed-off-by: Chris Down <chris@chrisdown.name>
---
 arch/x86/mm/pat/memtype.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c
index cf94fb561310..007d833b4c00 100644
--- a/arch/x86/mm/pat/memtype.c
+++ b/arch/x86/mm/pat/memtype.c
@@ -613,7 +613,7 @@ int memtype_free(u64 start, u64 end)
 		return 0;
 
 	start = sanitize_phys(start);
-	end = sanitize_phys(end);
+	end = sanitize_phys(end - 1) + 1;
 
 	/* Low ISA region is always mapped WB. No need to track */
 	if (x86_platform.is_untracked_pat_range(start, end))

base-commit: 5cdc3746fa163fb4e8d05fa3cabf46bc6aa7df75

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

only message in thread, other threads:[~2026-11-08  5:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-08  5:25 [PATCH] x86/mm/pat: Don't leak reservations at the physical address limit Chris Down

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

all inboxes | Powered by JetHome®