nwfilter: grab driver lock earlier during init (bz96649)

This patch is in relation to Bug 966449:

https://bugzilla.redhat.com/show_bug.cgi?id=966449

This is a patch addressing the coredump.

Thread 1 must be calling  nwfilterDriverRemoveDBusMatches(). It does so with
nwfilterDriverLock held. In the patch below I am now moving the
nwfilterDriverLock(driverState) further up so that the initialization, which
seems to either take a long time or is entirely stuck, occurs with the lock
held and the shutdown cannot occur at the same time. 

Remove the lock in virNWFilterDriverIsWatchingFirewallD to avoid
double-locking.
This commit is contained in:
Stefan Berger 2013-06-04 14:50:20 -04:00 committed by Stefan Berger
parent 7a5ac83520
commit 0ec376c20a

View File

@ -191,6 +191,8 @@ nwfilterStateInitialize(bool privileged,
if (!privileged)
return 0;
nwfilterDriverLock(driverState);
if (virNWFilterIPAddrMapInit() < 0)
goto err_free_driverstate;
if (virNWFilterLearnInit() < 0)
@ -203,8 +205,6 @@ nwfilterStateInitialize(bool privileged,
if (virNWFilterConfLayerInit(virNWFilterDomainFWUpdateCB) < 0)
goto err_techdrivers_shutdown;
nwfilterDriverLock(driverState);
/*
* startup the DBus late so we don't get a reload signal while
* initializing
@ -316,16 +316,10 @@ nwfilterStateReload(void) {
bool
virNWFilterDriverIsWatchingFirewallD(void)
{
bool ret;
if (!driverState)
return false;
nwfilterDriverLock(driverState);
ret = driverState->watchingFirewallD;
nwfilterDriverUnlock(driverState);
return ret;
return driverState->watchingFirewallD;
}
/**