Without this patch, the kernel crashes when it tries to cleanup a port
at unload time when a port has been previously deleted from userspace.
Crash is in OvsRemoveAndDeleteVport() when we call into
RemoveEntryList().

Signed-off-by: Nithin Raju <nit...@vmware.com>
---
 datapath-windows/ovsext/Datapath.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/datapath-windows/ovsext/Datapath.c 
b/datapath-windows/ovsext/Datapath.c
index 281c3f6..761e74c 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -2065,7 +2065,8 @@ OvsDeleteVportCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
 
     static const NL_POLICY ovsVportPolicy[] = {
         [OVS_VPORT_ATTR_PORT_NO] = { .type = NL_A_U32, .optional = TRUE },
-        [OVS_VPORT_ATTR_NAME] = { .type = NL_A_STRING, .maxLen = IFNAMSIZ, 
.optional = TRUE },
+        [OVS_VPORT_ATTR_NAME] = { .type = NL_A_STRING, .maxLen = IFNAMSIZ,
+                                  .optional = TRUE },
     };
     PNL_ATTR vportAttrs[ARRAY_SIZE(ovsVportPolicy)];
 
@@ -2130,7 +2131,9 @@ OvsDeleteVportCmdHandler(POVS_USER_PARAMS_CONTEXT 
usrParamsCtx,
          * "not created", i.e. we set vport->portNo = OVS_PORT_NUMBER_INVALID.
         */
         RemoveEntryList(&vport->ovsNameLink);
+        InitializeListHead(&vport->ovsNameLink);
         RemoveEntryList(&vport->portNoLink);
+        InitializeListHead(&vport->portNoLink);
         vport->portNo = OVS_DPPORT_NUMBER_INVALID;
         vport->ovsName[0] = '\0';
     }
-- 
1.7.4.1

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

Reply via email to