[libvirt] [PATCH v2] nwfilter: grab driver lock earlier during init (bz96649)
Laine Stump
laine at laine.org
Tue Jun 4 18:45:52 UTC 2013
On 06/03/2013 06:39 PM, Stefan Berger wrote:
> This patch is in _relation_ to Bug 966449:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=966449
>
> Below is a possible 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 trying to
> lock the same lock again.
>
> ---
> src/nwfilter/nwfilter_driver.c | 12 +++---------
> 1 file changed, 3 insertions(+), 9 deletions(-)
>
> Index: libvirt/src/nwfilter/nwfilter_driver.c
> ===================================================================
> --- libvirt.orig/src/nwfilter/nwfilter_driver.c
> +++ libvirt/src/nwfilter/nwfilter_driver.c
> @@ -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;
> }
>
> /**
>
>
ACK.
More information about the libvir-list
mailing list