diff options
author | Sorin Vinturis <svinturis@cloudbasesolutions.com> | 2015-09-01 14:21:09 +0000 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2015-09-01 10:23:22 -0700 |
commit | 2cbf3e4e283952f82aaa27ca716d8f0a7843e964 (patch) | |
tree | 3bde89bc16204bef9d2e701ea5bb4b94144e7a5f /datapath-windows/ovsext/Driver.c | |
parent | 3a22387bea8ed9ca124c39952b9aedb8bc599d1f (diff) | |
download | openvswitch-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.c | 20 |
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; |