From: Daniel P. Berrange Date: Wed, 7 Dec 2011 14:46:38 +0000 (+0000) Subject: Revert fd066925440ba48acc95d8f31b2c98b1cc9d582d X-Git-Tag: v0.9.8~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50a4f49c19e2953f8c4262a3fc6cd50d4e64229e;p=thirdparty%2Flibvirt.git Revert fd066925440ba48acc95d8f31b2c98b1cc9d582d Commit fd066925440ba48acc95d8f31b2c98b1cc9d582d tried to fix a race condition in commit fa9595003d043df9f2efe95521c00898cef27106 Author: Daniel P. Berrange Date: Fri Nov 11 15:28:41 2011 +0000 Explicitly track whether the buck is held in remote client Unfortunately there is a second race condition whereby the event loop can trigger due to incoming data to read. Revert this fix, so a complete fix for the problem can be cleanly applied * src/rpc/virnetclient.c: Revert fd066925440ba48acc95d8f31b2c98b1cc9d582d --- diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 7f9a33222e..e35521d45a 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -1545,7 +1545,6 @@ static int virNetClientIO(virNetClientPtr client, virNetClientCallQueue(&client->waitDispatch, thiscall); /* Check to see if another thread is dispatching */ -recheck: if (client->haveTheBuck) { char ignore = 1; @@ -1593,13 +1592,7 @@ recheck: goto cleanup; } - /* Grr, someone might have passed the buck onto us ... */ - - /* We need to re-check if the buck has been passed to this thread - * as this thread might have been signalled to wake up, but another - * call might acquire the lock before this thread manages to wake up. - * This could cause that two threads claim they have the buck */ - goto recheck; + /* Grr, someone passed the buck onto us ... */ } VIR_DEBUG("We have the buck %p %p", client->waitDispatch, thiscall);