From 228df5c91c87d98383f02ee07bbfdc001ba0ab0f Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Fri, 15 Jan 2016 13:23:43 +0000 Subject: xen: domainbuild: reopen libxenctrl interface after forking for domain watcher. Using an existing libxenctrl handle after a fork was never particularly safe (especially if foreign mappings existed at the time of the fork) and the xc fd has been unavailable for many releases. Reopen the handle after fork and therefore do away with xc_fd(). Signed-off-by: Ian Campbell Acked-by: Stefano Stabellini Signed-off-by: Stefano Stabellini --- hw/xenpv/xen_domainbuild.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'hw/xenpv/xen_domainbuild.c') diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index ac0e5ac9f0..f9be029b0e 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -174,12 +174,15 @@ static int xen_domain_watcher(void) for (i = 3; i < n; i++) { if (i == fd[0]) continue; - if (i == xc_fd(xen_xc)) { - continue; - } close(i); } + /* + * Reopen xc interface, since the original is unsafe after fork + * and was closed above. + */ + xen_xc = xc_interface_open(0, 0, 0); + /* ignore term signals */ signal(SIGINT, SIG_IGN); signal(SIGTERM, SIG_IGN); -- cgit 1.4.1