summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Driver.c
diff options
context:
space:
mode:
authorSorin Vinturis <svinturis@cloudbasesolutions.com>2015-09-01 14:21:09 +0000
committerBen Pfaff <blp@nicira.com>2015-09-01 10:23:22 -0700
commit2cbf3e4e283952f82aaa27ca716d8f0a7843e964 (patch)
tree3bde89bc16204bef9d2e701ea5bb4b94144e7a5f /datapath-windows/ovsext/Driver.c
parent3a22387bea8ed9ca124c39952b9aedb8bc599d1f (diff)
downloadopenvswitch-2cbf3e4e283952f82aaa27ca716d8f0a7843e964.tar.gz
datapath-windows: Clean up properly in case of driver init failure.
Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/Driver.c')
-rw-r--r--datapath-windows/ovsext/Driver.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/datapath-windows/ovsext/Driver.c b/datapath-windows/ovsext/Driver.c
index 13fcde200..853886e2e 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;