Commit c1d5e402 authored by Juergen Gross's avatar Juergen Gross Committed by Julien Grall

tools/xenstore: don't let special watches be children of /

When firing special watches (e.g. "@releaseDomain"), they will be
regarded to be valid children of the "/" node. So a domain having
registered a watch for "/" and having the privilege to receive
the special watches will receive those special watch events for the
registered "/" watch.

Fix that by calling the related fire_watches() with the "exact"
parameter set to true, causing a mismatch for the "/" node.
Reported-by: default avatarRaphael Ning <>
Signed-off-by: default avatarJuergen Gross <>
Reviewed-by: default avatarRaphael Ning <>
Reviewed-by: default avatarJulien Grall <>
parent af570d1c
......@@ -231,7 +231,7 @@ static int destroy_domain(void *_domain)
fire_watches(NULL, domain, "@releaseDomain", NULL, false, NULL);
fire_watches(NULL, domain, "@releaseDomain", NULL, true, NULL);
......@@ -282,7 +282,7 @@ void check_domains(void)
if (notify)
fire_watches(NULL, NULL, "@releaseDomain", NULL, false, NULL);
fire_watches(NULL, NULL, "@releaseDomain", NULL, true, NULL);
/* We scan all domains rather than use the information given here. */
......@@ -495,7 +495,7 @@ static struct domain *introduce_domain(const void *ctx,
if (!is_master_domain && !restore)
fire_watches(NULL, ctx, "@introduceDomain", NULL,
false, NULL);
true, NULL);
} else {
/* Use XS_INTRODUCE for recreating the xenbus event-channel. */
if (domain->port)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment