- Free the MDL on failure

- Use _SEH_YIELD

svn path=/branches/aicom-network-fixes/; revision=35291
This commit is contained in:
Cameron Gutman 2008-08-12 18:34:07 +00:00
parent b50e9e3146
commit 8f5e892fbf

View file

@ -864,17 +864,12 @@ NTSTATUS TdiSend
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));
TdiBuildSend(*Irp, /* I/O Request Packet */
@ -952,17 +947,12 @@ NTSTATUS TdiReceive(
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));
TdiBuildReceive(*Irp, /* I/O Request Packet */
@ -1055,6 +1045,7 @@ NTSTATUS TdiReceiveDatagram(
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 @@ NTSTATUS TdiSendDatagram(
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);