mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[CONSOLED] Shouldn't call domain_create_ring() for a domU which is shutting down.
There is a race condition between domain_create_ring() and the removal of the domU entry from xenstore. If the removal of the domU entry from xenstore comes later than the first xs_gather() call in domain_create_ring(), it will go on and bind the evtchn port to the dying domU, which will cause below error message: (XEN) (file=event_channel.c, line=144) EVTCHNOP failure: domain 0, error -22, line 144 Signed-off-by: Max Zhen <max.zhen@sun.com>
This commit is contained in:
1 parent
9f019b36fd
commit
80f2588d2b
1 file changed
+6
-4
@@ -293,12 +293,14 @@ static bool watch_domain(struct domain *dom, bool watch)
|
||||
bool success;
|
||||
|
||||
sprintf(domid_str, "dom%u", dom->domid);
|
||||
if (watch)
|
||||
if (watch) {
|
||||
success = xs_watch(xs, dom->conspath, domid_str);
|
||||
else
|
||||
if (success)
|
||||
domain_create_ring(dom);
|
||||
} else {
|
||||
success = xs_unwatch(xs, dom->conspath, domid_str);
|
||||
if (success)
|
||||
domain_create_ring(dom);
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||