From f8fdceefbb1193ec81667eb40b83bc525cb71204 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 20 Jan 2023 09:23:42 +0100 Subject: [PATCH] x86/shadow: fix PAE check for top-level table unshadowing Clearly within the for_each_vcpu() the vCPU of this loop is meant, not the (loop invariant) one the fault occurred on. Fixes: 3d5e6a3ff383 ("x86 hvm: implement HVMOP_pagetable_dying") Fixes: ef3b0d8d2c39 ("x86/shadow: shadow_table[] needs only one entry for PV-only configs") Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- xen/arch/x86/mm/shadow/multi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 98c0b7302a..8b3e678fa0 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -2677,10 +2677,10 @@ static int cf_check sh_page_fault( #if GUEST_PAGING_LEVELS == 3 unsigned int i; - for_each_shadow_table(v, i) + for_each_shadow_table(tmp, i) { mfn_t smfn = pagetable_get_mfn( - v->arch.paging.shadow.shadow_table[i]); + tmp->arch.paging.shadow.shadow_table[i]); if ( mfn_x(smfn) ) {