Skip to contentSkip to conversation

mini-os: Properly release xenbus ids

PATCH New Jacob Gorm Hansen 1 participant 1 message Apr 5, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mini-os: Properly release xenbus ids

If more than NR_REQS xenbus requests have been made, xenbus locks up in an infinite loop. This simple patch fixes this, and also removes waiters from the xenbus wait queues.

Regards,
Jacob

extras/mini-os/xenbus/xenbus.c +2 -0
diff -r 282bb4b03e5c extras/mini-os/xenbus/xenbus.c
@@ -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;

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel