Ordinary scalar operations are used in a multitude of other places, so do so here as well. In fact take the opportunity and drop a local variable then as well, first and foremost to get rid of a bogus cast.
Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -1659,9 +1659,8 @@ void sh_resync_l1(struct vcpu *v, mfn_t SHADOW_FOREACH_L1E(sl1mfn, sl1p, &gl1p, 0, { guest_l1e_t gl1e = *gl1p; - guest_l1e_t *snpl1p = (guest_l1e_t *)snp + guest_index(gl1p); - if ( memcmp(snpl1p, &gl1e, sizeof(gl1e)) ) + if ( snp[guest_index(gl1p)].l1 != gl1e.l1 ) { gfn_t gfn; mfn_t gmfn = INVALID_MFN; @@ -1677,7 +1676,7 @@ void sh_resync_l1(struct vcpu *v, mfn_t l1e_propagate_from_guest(v, gl1e, gmfn, &nsl1e, ft_prefetch, p2mt); rc |= shadow_set_l1e(d, sl1p, nsl1e, p2mt, sl1mfn); - *snpl1p = gl1e; + snp[guest_index(gl1p)] = gl1e; } });