提交 0ec376c2 编写于 作者: S Stefan Berger 提交者: Stefan Berger

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.
上级 7a5ac835
......@@ -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;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册