From 4edb1a42e3320757e3559f17edf6903bc1777de3 Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Thu, 30 Mar 2017 15:11:24 +0200 Subject: [PATCH] x86: use 64 bit mask when masking away mfn bits When using _PAGE_PSE_PAT as base for a negated bit mask make sure it is propagated to 64 bits when applied to a 64 bit value. There seems to be only one place where this is a problem, so fix this by casting _PAGE_PSE_PAT to 64 bits there. Not doing so will probably lead to problems on hosts with more than 16 TB of memory. Signed-off-by: Juergen Gross Reviewed-by: Jan Beulich Acked-by: George Dunlap --- xen/arch/x86/mm/p2m-pt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c index 07e2ccda5e..268b2320a1 100644 --- a/xen/arch/x86/mm/p2m-pt.c +++ b/xen/arch/x86/mm/p2m-pt.c @@ -450,7 +450,7 @@ static int do_recalc(struct p2m_domain *p2m, unsigned long gfn) mfn |= _PAGE_PSE_PAT >> PAGE_SHIFT; } else - mfn &= ~(_PAGE_PSE_PAT >> PAGE_SHIFT); + mfn &= ~((unsigned long)_PAGE_PSE_PAT >> PAGE_SHIFT); flags |= _PAGE_PSE; } e = l1e_from_pfn(mfn, flags); -- 2.39.5