[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Watch events may get lost, the xenstored response races against the new
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |