diff --git a/tools/xenstore/xenstored_domain.c b/tools/xenstore/xenstored_domain.c index 5858185211..06359503f0 100644 --- a/tools/xenstore/xenstored_domain.c +++ b/tools/xenstore/xenstored_domain.c @@ -55,10 +55,6 @@ struct domain repeated domain introductions. */ evtchn_port_t remote_port; - /* The mfn associated with the event channel, used only to validate - repeated domain introductions. */ - unsigned long mfn; - /* Domain path in store. */ char *path; @@ -363,13 +359,12 @@ static void domain_conn_reset(struct domain *domain) domain->interface->rsp_cons = domain->interface->rsp_prod = 0; } -/* domid, mfn, evtchn, path */ +/* domid, gfn, evtchn, path */ int do_introduce(struct connection *conn, struct buffered_data *in) { struct domain *domain; char *vec[3]; unsigned int domid; - unsigned long mfn; evtchn_port_t port; int rc; struct xenstore_domain_interface *interface; @@ -381,7 +376,7 @@ int do_introduce(struct connection *conn, struct buffered_data *in) return EACCES; domid = atoi(vec[0]); - mfn = atol(vec[1]); + /* Ignore the gfn, we don't need it. */ port = atoi(vec[2]); /* Sanity check args. */ @@ -402,21 +397,19 @@ int do_introduce(struct connection *conn, struct buffered_data *in) return rc; } domain->interface = interface; - domain->mfn = mfn; /* Now domain belongs to its connection. */ talloc_steal(domain->conn, domain); fire_watches(NULL, in, "@introduceDomain", false); - } else if ((domain->mfn == mfn) && (domain->conn != conn)) { + } else { /* Use XS_INTRODUCE for recreating the xenbus event-channel. */ if (domain->port) xenevtchn_unbind(xce_handle, domain->port); rc = xenevtchn_bind_interdomain(xce_handle, domid, port); domain->port = (rc == -1) ? 0 : rc; domain->remote_port = port; - } else - return EINVAL; + } domain_conn_reset(domain);