All conntrack entries should be removed before unloading/disabling the
driver.

This patch forces a flush of all the entries during the cleanup routine.

The bug was found using driver verifier.

Signed-off-by: Alin Gabriel Serdean <[email protected]>
---
 datapath-windows/ovsext/Conntrack.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/datapath-windows/ovsext/Conntrack.c 
b/datapath-windows/ovsext/Conntrack.c
index 56a7cbc..f482783 100644
--- a/datapath-windows/ovsext/Conntrack.c
+++ b/datapath-windows/ovsext/Conntrack.c
@@ -42,6 +42,8 @@ static PNDIS_RW_LOCK_EX ovsConntrackLockObj;
 extern POVS_SWITCH_CONTEXT gOvsSwitchContext;
 static UINT64 ctTotalEntries;
 
+static __inline NDIS_STATUS OvsCtFlush(UINT16 zone);
+
 /*
  *----------------------------------------------------------------------------
  * OvsInitConntrack
@@ -117,6 +119,9 @@ OvsCleanupConntrack(VOID)
                           KernelMode, FALSE, NULL);
     ObDereferenceObject(ctThreadCtx.threadObject);
 
+    /* Force flush all entries before removing */
+    OvsCtFlush(0);
+
     if (ovsConntrackTable) {
         OvsFreeMemoryWithTag(ovsConntrackTable, OVS_CT_POOL_TAG);
         ovsConntrackTable = NULL;
-- 
2.10.2.windows.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to