Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetLwf-win.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetLwf-win.cpp	(revision 56588)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetLwf-win.cpp	(revision 56589)
@@ -802,8 +802,4 @@
     pModuleCtx->hFilter   = hFilter;
     vboxNetLwfWinChangeState(pModuleCtx, LwfState_Attaching);
-    /* Insert into module chain */
-    NdisAcquireSpinLock(&pGlobals->Lock);
-    RTListPrepend(&pGlobals->listModules, &pModuleCtx->node);
-    NdisReleaseSpinLock(&pGlobals->Lock);
     /* Initialize transmission mutex and events */
     NDIS_INIT_MUTEX(&pModuleCtx->InTransmit);
@@ -855,4 +851,8 @@
         return NDIS_STATUS_RESOURCES;
     }
+    /* Insert into module chain */
+    NdisAcquireSpinLock(&pGlobals->Lock);
+    RTListPrepend(&pGlobals->listModules, &pModuleCtx->node);
+    NdisReleaseSpinLock(&pGlobals->Lock);
 
     vboxNetLwfWinChangeState(pModuleCtx, LwfState_Paused);
@@ -2333,4 +2333,5 @@
     RtlInitAnsiString(&strInst, pThis->szName);
     PVBOXNETLWF_MODULE pModuleCtx = NULL;
+    NdisAcquireSpinLock(&g_VBoxNetLwfGlobals.Lock);
     RTListForEach(&g_VBoxNetLwfGlobals.listModules, pModuleCtx, VBOXNETLWF_MODULE, node)
     {
@@ -2338,4 +2339,5 @@
         if (RtlEqualString(&strInst, &pModuleCtx->strMiniportName, TRUE))
         {
+            NdisReleaseSpinLock(&g_VBoxNetLwfGlobals.Lock);
             Log(("vboxNetFltOsInitInstance: found matching module, name=%s\n", pThis->szName));
             pThis->u.s.WinIf.hModuleCtx = pModuleCtx;
@@ -2347,4 +2349,5 @@
         }
     }
+    NdisReleaseSpinLock(&g_VBoxNetLwfGlobals.Lock);
     LogFlow(("<==vboxNetFltOsInitInstance: return VERR_INTNET_FLT_IF_NOT_FOUND\n"));
     return VERR_INTNET_FLT_IF_NOT_FOUND;
