OvsReadEventCmdHandler was calling OvsRemoveEventEntry after acquiring
CtrlLock. OvsRemoveEventEntry in turn also tries to acquire the same lock.

Added a new lock in Event.c for the eventQueue.

Signed-off-by: Ankur Sharma <ankursha...@vmware.com>
---
 datapath-windows/ovsext/Event.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/datapath-windows/ovsext/Event.c b/datapath-windows/ovsext/Event.c
index 467771d..d80f3fd 100644
--- a/datapath-windows/ovsext/Event.c
+++ b/datapath-windows/ovsext/Event.c
@@ -28,15 +28,15 @@
 #include "Debug.h"
 
 LIST_ENTRY ovsEventQueue;
+static NDIS_SPIN_LOCK eventQueueLock;
 UINT32 ovsNumEventQueue;
 UINT32 ovsNumPollAll;
 
-extern PNDIS_SPIN_LOCK gOvsCtrlLock;
-
 NTSTATUS
 OvsInitEventQueue()
 {
     InitializeListHead(&ovsEventQueue);
+    NdisAllocateSpinLock(&eventQueueLock);
     return STATUS_SUCCESS;
 }
 
@@ -45,18 +45,19 @@ OvsCleanupEventQueue()
 {
     ASSERT(IsListEmpty(&ovsEventQueue));
     ASSERT(ovsNumEventQueue == 0);
+    NdisFreeSpinLock(&eventQueueLock);
 }
 
 static __inline VOID
 OvsAcquireEventQueueLock()
 {
-    NdisAcquireSpinLock(gOvsCtrlLock);
+    NdisAcquireSpinLock(&eventQueueLock);
 }
 
 static __inline VOID
 OvsReleaseEventQueueLock()
 {
-   NdisReleaseSpinLock(gOvsCtrlLock);
+   NdisReleaseSpinLock(&eventQueueLock);
 }
 
 /*
-- 
1.9.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to