[ros-diffs] [cgutman] 35291: - Free the MDL on failure - Use _SEH_YIELD

cgutman at svn.reactos.org cgutman at svn.reactos.org
Tue Aug 12 20:34:08 CEST 2008


Author: cgutman
Date: Tue Aug 12 13:34:07 2008
New Revision: 35291

URL: http://svn.reactos.org/svn/reactos?rev=35291&view=rev
Log:
 - Free the MDL on failure
 - Use _SEH_YIELD

Modified:
    branches/aicom-network-fixes/drivers/network/afd/afd/tdi.c

Modified: branches/aicom-network-fixes/drivers/network/afd/afd/tdi.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/network/afd/afd/tdi.c?rev=35291&r1=35290&r2=35291&view=diff
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/tdi.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/tdi.c [iso-8859-1] Tue Aug 12 13:34:07 2008
@@ -864,16 +864,11 @@
         MmProbeAndLockPages(Mdl, KernelMode, IoModifyAccess);
     } _SEH_HANDLE {
         AFD_DbgPrint(MIN_TRACE, ("MmProbeAndLockPages() failed.\n"));
+	IoFreeMdl(Mdl);
         IoFreeIrp(*Irp);
         *Irp = NULL;
-        Status = STATUS_INSUFFICIENT_RESOURCES;
+        _SEH_YIELD(return STATUS_INSUFFICIENT_RESOURCES);
     } _SEH_END;
-
-    if( !NT_SUCCESS(Status) ) {
-	IoFreeIrp(*Irp);
-	*Irp = NULL;
-	return Status;
-    }
 
     AFD_DbgPrint(MID_TRACE,("AFD>>> Got an MDL: %x\n", Mdl));
 
@@ -952,16 +947,11 @@
         AFD_DbgPrint(MIN_TRACE, ("probe and lock done\n"));
     } _SEH_HANDLE {
         AFD_DbgPrint(MIN_TRACE, ("MmProbeAndLockPages() failed.\n"));
+	IoFreeMdl(Mdl);
         IoFreeIrp(*Irp);
 	*Irp = NULL;
-	Status = STATUS_INSUFFICIENT_RESOURCES;
+	_SEH_YIELD(return STATUS_INSUFFICIENT_RESOURCES);
     } _SEH_END;
-
-    if( !NT_SUCCESS(Status) ) {
-	IoFreeIrp(*Irp);
-	*Irp = NULL;
-	return Status;
-    }
 
     AFD_DbgPrint(MID_TRACE,("AFD>>> Got an MDL: %x\n", Mdl));
 
@@ -1055,6 +1045,7 @@
         MmProbeAndLockPages(Mdl, KernelMode, IoModifyAccess);
     } _SEH_HANDLE {
         AFD_DbgPrint(MIN_TRACE, ("MmProbeAndLockPages() failed.\n"));
+	IoFreeMdl(Mdl);
         IoFreeIrp(*Irp);
         *Irp = NULL;
         _SEH_YIELD(return STATUS_INSUFFICIENT_RESOURCES);
@@ -1153,6 +1144,7 @@
         MmProbeAndLockPages(Mdl, KernelMode, IoModifyAccess);
     } _SEH_HANDLE {
         AFD_DbgPrint(MIN_TRACE, ("MmProbeAndLockPages() failed.\n"));
+	IoFreeMdl(Mdl);
         IoFreeIrp(*Irp);
         *Irp = NULL;
         _SEH_YIELD(return STATUS_INSUFFICIENT_RESOURCES);



More information about the Ros-diffs mailing list