From 0b4e62847c5af1a59eea8d17093feccd550d1c26 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 10 Jun 2022 10:28:28 +0200 Subject: [PATCH 29/51] x86/mm: account for PGT_pae_xen_l2 in recently added assertion While PGT_pae_xen_l2 will be zapped once the type refcount of an L2 page reaches zero, it'll be retained as long as the type refcount is non- zero. Hence any checking against the requested type needs to either zap the bit from the type or include it in the used mask. Fixes: 9186e96b199e ("x86/pv: Clean up _get_page_type()") Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper master commit: c2095ac76be0f4a1940346c9ffb49fb967345060 master date: 2022-06-10 10:21:06 +0200 --- xen/arch/x86/mm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index bab9624fabb7..c1b9a3bb102a 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2928,7 +2928,8 @@ static int _get_page_type(struct page_info *page, unsigned long type, * The page is in one of two states (depending on PGT_partial), * and should have exactly one reference. */ - ASSERT((x & (PGT_type_mask | PGT_count_mask)) == (type | 1)); + ASSERT((x & (PGT_type_mask | PGT_pae_xen_l2 | PGT_count_mask)) == + (type | 1)); if ( !(x & PGT_partial) ) { -- 2.35.1