|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xenstored: don't use xenevtchn_fdopen() in stubdom
commit 31a551277735ce89848840e9deeab389eca932b9
Author: Juergen Gross <jgross@xxxxxxxx>
AuthorDate: Thu Jul 31 09:44:58 2025 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Jul 31 09:44:58 2025 +0200
xenstored: don't use xenevtchn_fdopen() in stubdom
When running in a stubdom environment xenevtchn_fdopen() won't work,
as any file descriptor state is lost across kexec().
Use a wrapper to replace the call of xenevtchn_fdopen() with the
really needed xenevtchn_open() when running on top of Mini-OS.
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Reviewed-by: Jason Andryuk <jason.andryuk@xxxxxxx>
---
tools/xenstored/core.h | 3 +++
tools/xenstored/domain.c | 2 +-
tools/xenstored/minios.c | 5 +++++
tools/xenstored/posix.c | 5 +++++
4 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 1ba9592d16..bef24a688c 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -29,6 +29,7 @@
#include <stdint.h>
#include <time.h>
#include <errno.h>
+#include <xenevtchn.h>
#include "xenstore_lib.h"
#include "xenstore_state.h"
@@ -405,6 +406,8 @@ void handle_special_fds(void);
int get_socket_fd(void);
void set_socket_fd(int fd);
+xenevtchn_handle *evtchn_fdopen(int fd);
+
#ifdef __MINIOS__
void mount_9pfs(void);
#endif
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index e371925c0a..7f8f04dc78 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1396,7 +1396,7 @@ void domain_init(int evtfd)
if (evtfd < 0)
xce_handle = xenevtchn_open(NULL, XENEVTCHN_NO_CLOEXEC);
else
- xce_handle = xenevtchn_fdopen(NULL, evtfd, 0);
+ xce_handle = evtchn_fdopen(evtfd);
if (xce_handle == NULL)
barf_perror("Failed to open evtchn device");
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index a229954cf4..aa1f03fd6b 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -85,6 +85,11 @@ void set_socket_fd(int fd)
{
}
+xenevtchn_handle *evtchn_fdopen(int fd)
+{
+ return xenevtchn_open(NULL, XENEVTCHN_NO_CLOEXEC);
+}
+
static void mount_thread(void *p)
{
xenbus_event_queue events = NULL;
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 6037d739d0..ebdec82215 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -408,6 +408,11 @@ void set_socket_fd(int fd)
sock = fd;
}
+xenevtchn_handle *evtchn_fdopen(int fd)
+{
+ return xenevtchn_fdopen(NULL, fd, 0);
+}
+
const char *xenstore_rundir(void)
{
return xenstore_daemon_rundir();
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |