diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-11-23 07:21:58 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-11-23 07:21:58 +0000 |
commit | 375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca (patch) | |
tree | 6c20d4c3f67b410e73c99e11bc19ad0855617b38 /extras/mini-os/fbfront.c | |
parent | 995380cd80da7a5385e06d2ff0798b48cff64c15 (diff) | |
download | xen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.tar.gz xen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.tar.bz2 xen-375f53964b1dc6ea8ea6d7057f77b3a43c4c7eca.zip |
minios: Fix xenbus_unwatch_path calls
In a lot of places in MiniOS frontends, xenbus_watch_path_token is
used instead of xenbus_watch_path to get more precise wake ups. To
free those, xenbus_unwatch_path_token has to be used instead of
xenbus_unwatch_path, else the unwatch operation will fail. This fixes
spurious watch events left by pv-grub.
Signed-Off-By: Samuel Thibault <samuel.thibault@ens-lyon.org>
Diffstat (limited to 'extras/mini-os/fbfront.c')
-rw-r--r-- | extras/mini-os/fbfront.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/extras/mini-os/fbfront.c b/extras/mini-os/fbfront.c index 8cf1721975..d06b5351ab 100644 --- a/extras/mini-os/fbfront.c +++ b/extras/mini-os/fbfront.c @@ -165,7 +165,7 @@ done: err = xenbus_wait_for_state_change(path, &state, &dev->events); if (state != XenbusStateConnected) { printk("backend not available, state=%d\n", state); - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); goto error; } @@ -175,7 +175,7 @@ done: if((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected)) != NULL) { printk("error switching state: %s\n", err); - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); goto error; } } @@ -265,7 +265,7 @@ void shutdown_kbdfront(struct kbdfront_dev *dev) //xenbus_wait_for_value(path, "2", &dev->events); close_kbdfront: - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); snprintf(path, sizeof(path), "%s/page-ref", nodename); xenbus_rm(XBT_NIL, path); @@ -513,7 +513,7 @@ done: err = xenbus_wait_for_state_change(path, &state, &dev->events); if (state != XenbusStateConnected) { printk("backend not available, state=%d\n", state); - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); goto error; } @@ -526,7 +526,7 @@ done: if ((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected)) != NULL) { printk("error switching state: %s\n", err); - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); goto error; } } @@ -644,7 +644,7 @@ void shutdown_fbfront(struct fbfront_dev *dev) //xenbus_wait_for_value(path, "2", &dev->events); close_fbfront: - xenbus_unwatch_path(XBT_NIL, path); + xenbus_unwatch_path_token(XBT_NIL, path, path); snprintf(path, sizeof(path), "%s/page-ref", nodename); xenbus_rm(XBT_NIL, path); |