From: Jan Beulich Date: Tue, 25 May 2021 07:08:43 +0000 (+0200) Subject: x86/shadow: fix DO_UNSHADOW() X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~502 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=81acb1d7bdd5b1bf9c3422dcfeda616db2405d6f;p=xen.git x86/shadow: fix DO_UNSHADOW() When adding the HASH_CALLBACKS_CHECK() I failed to properly recognize the (somewhat unusually formatted) if() around the call to hash_domain_foreach()). Gcc 11 is absolutely right in pointing out the apparently misleading indentation. Besides adding the missing braces, also adjust the two oddly formatted if()-s in the macro. Fixes: 90629587e16e ("x86/shadow: replace stale literal numbers in hash_{vcpu,domain}_foreach()") Signed-off-by: Jan Beulich Reviewed-by: Luca Fancellu Reviewed-by: Tim Deegan --- diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index b060ebcb72..6db538502d 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -2220,8 +2220,8 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all) */ #define DO_UNSHADOW(_type) do { \ t = (_type); \ - if( !(pg->count_info & PGC_page_table) \ - || !(pg->shadow_flags & (1 << t)) ) \ + if ( !(pg->count_info & PGC_page_table) || \ + !(pg->shadow_flags & (1 << t)) ) \ break; \ smfn = shadow_hash_lookup(d, mfn_x(gmfn), t); \ if ( unlikely(!mfn_valid(smfn)) ) \ @@ -2235,11 +2235,13 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all) sh_unpin(d, smfn); \ else if ( sh_type_has_up_pointer(d, t) ) \ sh_remove_shadow_via_pointer(d, smfn); \ - if( !fast \ - && (pg->count_info & PGC_page_table) \ - && (pg->shadow_flags & (1 << t)) ) \ + if ( !fast && \ + (pg->count_info & PGC_page_table) && \ + (pg->shadow_flags & (1 << t)) ) \ + { \ HASH_CALLBACKS_CHECK(SHF_page_type_mask); \ hash_domain_foreach(d, masks[t], callbacks, smfn); \ + } \ } while (0) DO_UNSHADOW(SH_type_l2_32_shadow);