diff -r 282bb4b03e5c extras/mini-os/xenbus/xenbus.c --- a/extras/mini-os/xenbus/xenbus.c Thu Apr 05 21:34:09 2007 +0200 +++ b/extras/mini-os/xenbus/xenbus.c Thu Apr 05 23:05:34 2007 +0200 @@ -195,6 +195,7 @@ static void release_xenbus_id(int id) { BUG_ON(!req_info[id].in_use); spin_lock(&req_lock); + req_info[id].in_use = 0; nr_live_reqs--; if (nr_live_reqs == NR_REQS - 1) wake_up(&req_wq); @@ -350,6 +351,7 @@ xenbus_msg_reply(int type, xb_write(type, id, trans, io, nr_reqs); schedule(); + remove_waiter(w); wake(current); rep = req_info[id].reply;