|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] Watch events may get lost, the xenstored response races
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID ea6d9f29dff5d429c0a7cb6c381628e6f2bb38e1
# Parent 8cc7ce549d00bef90a568ed64a0309cec3d399e9
Watch events may get lost, the xenstored response races against the new
watch being added to the watch list in register_xenbus_watch(). Fixed
by adding the watch to the list unconditionally, and remove it in the
error case.
diff -r 8cc7ce549d00 -r ea6d9f29dff5
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c Mon Oct 31
09:45:31 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_xs.c Mon Oct 31
16:07:14 2005
@@ -682,14 +682,15 @@
spin_lock(&watches_lock);
BUG_ON(find_watch(token));
+ list_add(&watch->list, &watches);
spin_unlock(&watches_lock);
err = xs_watch(watch->node, token);
/* Ignore errors due to multiple registration. */
- if ((err == 0) || (err == -EEXIST)) {
+ if ((err != 0) && (err != -EEXIST)) {
spin_lock(&watches_lock);
- list_add(&watch->list, &watches);
+ list_del(&watch->list);
spin_unlock(&watches_lock);
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] Watch events may get lost, the xenstored response races against the new,
Xen patchbot -unstable <=
|
|
|
|
|