@@ -616,6 +616,7 @@ OvsOpenCloseDevice(PDEVICE_OBJECT deviceObject,
POVS_DEVICE_EXTENSION ovsExt =
(POVS_DEVICE_EXTENSION)NdisGetDeviceReservedExtension(deviceObject);
+ PAGED_CODE();
ASSERT(deviceObject == gOvsDeviceObject);
ASSERT(ovsExt != NULL);
@@ -648,7 +649,7 @@ NTSTATUS
OvsCleanupDevice(PDEVICE_OBJECT deviceObject,
PIRP irp)
{
-
+ PAGED_CODE();
PIO_STACK_LOCATION irpSp;
PFILE_OBJECT fileObject;
@@ -696,6 +697,7 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject,
NETLINK_FAMILY *nlFamilyOps;
OVS_USER_PARAMS_CONTEXT usrParamsCtx;
+ PAGED_CODE();
#ifdef DBG
POVS_DEVICE_EXTENSION ovsExt =
(POVS_DEVICE_EXTENSION)NdisGetDeviceReservedExtension(deviceObject);
@@ -60,6 +60,8 @@ static const GUID ovsExtGuid = {
{0x8b, 0x47, 0x57, 0x82, 0x97, 0xad, 0x76, 0x23}
};
+DRIVER_INITIALIZE DriverEntry;
+
/* Declarations of callback functions for the filter driver. */
DRIVER_UNLOAD OvsExtUnload;
FILTER_NET_PNP_EVENT OvsExtNetPnPEvent;
@@ -141,6 +143,7 @@ DriverEntry(PDRIVER_OBJECT driverObject,
driverObject->DriverUnload = OvsExtUnload;
+ gOvsExtDriverHandle = NULL;
status = NdisFRegisterFilterDriver(driverObject,
(NDIS_HANDLE)gOvsExtDriverObject,
&driverChars,
@@ -152,16 +155,14 @@ DriverEntry(PDRIVER_OBJECT driverObject,
/* Create the communication channel for userspace. */
status = OvsCreateDeviceObject(gOvsExtDriverHandle);
if (status != NDIS_STATUS_SUCCESS) {
+ NdisFDeregisterFilterDriver(gOvsExtDriverHandle);
+ gOvsExtDriverHandle = NULL;
goto cleanup;
}
cleanup:
if (status != NDIS_STATUS_SUCCESS){
OvsCleanup();
- if (gOvsExtDriverHandle) {
- NdisFDeregisterFilterDriver(gOvsExtDriverHandle);
- gOvsExtDriverHandle = NULL;
- }
}
return status;
Ensure gOvsExtDriverHandle is not used if initialization fails Added PAGED_CODE() where needed Signed-off-by: Paul-Daniel Boca <pboca@cloudbasesolutions.com> --- datapath-windows/ovsext/Datapath.c | 4 +++- datapath-windows/ovsext/Driver.c | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-)