diff options
-rw-r--r-- | datapath-windows/ovsext/Datapath.c | 5 | ||||
-rw-r--r-- | datapath-windows/ovsext/Datapath.h | 2 | ||||
-rw-r--r-- | datapath-windows/ovsext/Driver.c | 8 |
3 files changed, 11 insertions, 4 deletions
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c index 066541217..8eb13f14a 100644 --- a/datapath-windows/ovsext/Datapath.c +++ b/datapath-windows/ovsext/Datapath.c @@ -448,10 +448,8 @@ OvsCreateDeviceObject(NDIS_HANDLE ovsExtDriverHandle) if (ovsExt) { ovsExt->numberOpenInstance = 0; } - } else { - /* Initialize the associated data structures. */ - OvsInit(); } + OVS_LOG_TRACE("DeviceObject: %p", gOvsDeviceObject); return status; } @@ -474,7 +472,6 @@ OvsDeleteDeviceObject() gOvsDeviceHandle = NULL; gOvsDeviceObject = NULL; } - OvsCleanup(); } POVS_OPEN_INSTANCE diff --git a/datapath-windows/ovsext/Datapath.h b/datapath-windows/ovsext/Datapath.h index 2e3bac58f..ba31ece4b 100644 --- a/datapath-windows/ovsext/Datapath.h +++ b/datapath-windows/ovsext/Datapath.h @@ -81,6 +81,8 @@ typedef struct _OVS_OPEN_INSTANCE { NDIS_STATUS OvsCreateDeviceObject(NDIS_HANDLE ovsExtDriverHandle); VOID OvsDeleteDeviceObject(); +VOID OvsInit(); +VOID OvsCleanup(); POVS_OPEN_INSTANCE OvsGetOpenInstance(PFILE_OBJECT fileObject, UINT32 dpNo); diff --git a/datapath-windows/ovsext/Driver.c b/datapath-windows/ovsext/Driver.c index 0a9c35ab2..13fcde200 100644 --- a/datapath-windows/ovsext/Driver.c +++ b/datapath-windows/ovsext/Driver.c @@ -95,6 +95,9 @@ DriverEntry(PDRIVER_OBJECT driverObject, UNREFERENCED_PARAMETER(registryPath); + /* Initialize driver associated data structures. */ + OvsInit(); + gOvsExtDriverObject = driverObject; RtlZeroMemory(&driverChars, sizeof driverChars); @@ -145,6 +148,7 @@ DriverEntry(PDRIVER_OBJECT driverObject, /* Create the communication channel for usersapce. */ status = OvsCreateDeviceObject(gOvsExtDriverHandle); if (status != NDIS_STATUS_SUCCESS) { + OvsCleanup(); NdisFDeregisterFilterDriver(gOvsExtDriverHandle); gOvsExtDriverHandle = NULL; } @@ -163,7 +167,11 @@ OvsExtUnload(struct _DRIVER_OBJECT *driverObject) { UNREFERENCED_PARAMETER(driverObject); + /* Release driver associated data structures. */ + OvsCleanup(); + OvsDeleteDeviceObject(); + NdisFDeregisterFilterDriver(gOvsExtDriverHandle); } |