[ovs-dev] [PATCH] datapath-windows: Proper cleanup in case of driver init failure
Sorin Vinturis
svinturis at cloudbasesolutions.com
Tue Sep 1 12:16:25 UTC 2015
Signed-off-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
---
datapath-windows/ovsext/Driver.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/datapath-windows/ovsext/Driver.c b/datapath-windows/ovsext/Driver.c
index 13fcde2..853886e 100644
--- a/datapath-windows/ovsext/Driver.c
+++ b/datapath-windows/ovsext/Driver.c
@@ -139,18 +139,26 @@ DriverEntry(PDRIVER_OBJECT driverObject,
driverObject->DriverUnload = OvsExtUnload;
status = NdisFRegisterFilterDriver(driverObject,
- (NDIS_HANDLE) gOvsExtDriverObject,
- &driverChars, &gOvsExtDriverHandle);
+ (NDIS_HANDLE)gOvsExtDriverObject,
+ &driverChars,
+ &gOvsExtDriverHandle);
if (status != NDIS_STATUS_SUCCESS) {
- return status;
+ goto cleanup;
}
- /* Create the communication channel for usersapce. */
+ /* Create the communication channel for userspace. */
status = OvsCreateDeviceObject(gOvsExtDriverHandle);
if (status != NDIS_STATUS_SUCCESS) {
+ goto cleanup;
+ }
+
+cleanup:
+ if (status != NDIS_STATUS_SUCCESS){
OvsCleanup();
- NdisFDeregisterFilterDriver(gOvsExtDriverHandle);
- gOvsExtDriverHandle = NULL;
+ if (gOvsExtDriverHandle) {
+ NdisFDeregisterFilterDriver(gOvsExtDriverHandle);
+ gOvsExtDriverHandle = NULL;
+ }
}
return status;
--
1.9.0.msysgit.0
More information about the dev
mailing list