mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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: Raphael Ning <raphning@amazon.com> Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Raphael Ning <raphning@amazon.com> Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
af570d1c90
commit
c1d5e4021c
1 file changed
+3
-3
@@ -231,7 +231,7 @@ static int destroy_domain(void *_domain)
|
||||
unmap_interface(domain->interface);
|
||||
}
|
||||
|
||||
fire_watches(NULL, domain, "@releaseDomain", NULL, false, NULL);
|
||||
fire_watches(NULL, domain, "@releaseDomain", NULL, true, NULL);
|
||||
|
||||
wrl_domain_destroy(domain);
|
||||
|
||||
@@ -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)
|
||||
|
||||