Commit f33bb90c authored by Kaixing Hong's avatar Kaixing Hong

x86/mm: Make sure the event channel is released accurately

    In xenpaging source code,there is an interdomain communication between dom0
and domU. In mem_event_enable(),the function alloc_unbound_xen_event_channel()
allocates a free port for domU, and then it will be bound with dom0.
When xenpaging tears down,it just frees dom0's event channel port by
xc_evtchn_unbind(), leaves domU's port still occupied.
    So we add the patch to free domU's port when xenpaging exits.
We need double free interdomain eventchannel. First free domainU port,
and leave domain 0 port unbond, Then free domain 0 port.

Signed-off-by: Kaixing Hong <hongkaixing@huawei.com>,
Signed-off-by: default avatarZhen Shi <bicky.shi@huawei.com>
Acked-by: default avatarOlaf Hering <olaf@aepfle.de>
Committed-by: default avatarTim Deegan <tim@xen.org>
parent b554c560
......@@ -243,6 +243,9 @@ static int mem_event_disable(struct domain *d, struct mem_event_domain *med)
return -EBUSY;
}
/* Free domU's event channel and leave the other one unbound */
free_xen_event_channel(d->vcpu[0], med->xen_port);
unmap_domain_page(med->ring_page);
med->ring_page = NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment