Just like domain_soft_reset() properly zaps runstate area handles, the
secondary time area ones also need discarding to prevent guest memory
corruption once the guest is re-started.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
master commit:
b80d4f8d2ea6418e32fb4f20d1304ace6d6566e3
master date: 2022-10-27 11:49:09 +0200
struct page_info *page = virt_to_page(d->shared_info), *new_page;
int ret = 0;
struct domain *owner;
+ struct vcpu *v;
mfn_t mfn;
gfn_t gfn;
p2m_type_t p2mt;
"Failed to add a page to replace %pd's shared_info frame %"PRI_gfn"\n",
d, gfn_x(gfn));
free_domheap_page(new_page);
+ goto exit_put_gfn;
}
+
+ for_each_vcpu ( d, v )
+ set_xen_guest_handle(v->arch.time_info_guest, NULL);
+
exit_put_gfn:
put_gfn(d, gfn_x(gfn));
exit_put_page: