diff options
-rw-r--r-- | hw/xenpv/xen_domainbuild.c | 9 | ||||
-rw-r--r-- | include/hw/xen/xen_common.h | 17 |
2 files changed, 6 insertions, 20 deletions
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); diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h index 19f1577e8f..be7a915984 100644 --- a/include/hw/xen/xen_common.h +++ b/include/hw/xen/xen_common.h @@ -116,12 +116,6 @@ static inline XenXC xen_xc_interface_open(void *logger, void *dombuild_logger, /* See below for xenforeignmemory_* APIs */ -static inline int xc_fd(int xen_xc) -{ - return xen_xc; -} - - static inline int xc_domain_populate_physmap_exact (XenXC xc_handle, uint32_t domid, unsigned long nr_extents, unsigned int extent_order, unsigned int mem_flags, xen_pfn_t *extent_start) @@ -193,11 +187,6 @@ static inline XenXC xen_xc_interface_open(void *logger, void *dombuild_logger, /* See below for xenforeignmemory_* APIs */ -/* FIXME There is no way to have the xen fd */ -static inline int xc_fd(xc_interface *xen_xc) -{ - return -1; -} #else /* CONFIG_XEN_CTRL_INTERFACE_VERSION >= 471 */ typedef xc_interface *XenXC; @@ -214,12 +203,6 @@ static inline XenXC xen_xc_interface_open(void *logger, void *dombuild_logger, { return xc_interface_open(logger, dombuild_logger, open_flags); } - -/* FIXME There is now way to have the xen fd */ -static inline int xc_fd(xc_interface *xen_xc) -{ - return -1; -} #endif /* Xen before 4.2 */ |