- Merge the rest of my changes

svn path=/trunk/; revision=38545
This commit is contained in:
Cameron Gutman
2009-01-04 05:33:43 +00:00
parent 39cecf5684
commit 6fb0f9aa2d
25 changed files with 182 additions and 240 deletions
+1 -1
View File
@@ -703,7 +703,7 @@ static NTSTATUS ReadStringFromRegistry( HANDLE RegHandle,
UnicodeString.MaximumLength = Information->DataLength;
String->Buffer =
(PWCHAR)exAllocatePool( NonPagedPool,
(PWCHAR)ExAllocatePool( NonPagedPool,
UnicodeString.MaximumLength + sizeof(WCHAR) );
if( !String->Buffer ) return STATUS_NO_MEMORY;
@@ -10,18 +10,18 @@
#define FBSD_MALLOC FOURCC('d','s','b','f')
#define EXALLOC_TAG FOURCC('E','x','A','l')
#define IRP_TAG FOURCC('P','I','R','P')
#define NPLOOK_TAG FOURCC('N','P','L','A')
#define AllocatePacketWithBuffer(x,y,z) AllocatePacketWithBufferX(x,y,z,__FILE__,__LINE__)
#define FreeNdisPacket(x) FreeNdisPacketX(x,__FILE__,__LINE__)
#ifdef MEMTRACK
#ifdef DBG
#define MTMARK() TrackDumpFL(__FILE__, __LINE__)
#define exAllocatePool(x,y) ExAllocatePoolX(x,y,__FILE__,__LINE__)
#define exAllocatePoolWithTag(x,y,z) ExAllocatePoolX(x,y,__FILE__,__LINE__)
#define exFreePool(x) ExFreePoolX(x,__FILE__,__LINE__)
extern LIST_ENTRY AllocatedObjectsHead;
extern KSPIN_LOCK AllocatedObjectsLock;
#define exAllocateFromNPagedLookasideList(x) ExAllocateFromNPagedLookasideListX(x,__FILE__,__LINE__)
#define exFreeToNPagedLookasideList(x,y) ExFreeToNPagedLookasideListX(x,y,__FILE__,__LINE__)
typedef struct _ALLOCATION_TRACKER {
LIST_ENTRY Entry;
@@ -34,20 +34,32 @@ typedef struct _ALLOCATION_TRACKER {
VOID TrackingInit();
VOID TrackWithTag( DWORD Tag, PVOID Thing, PCHAR File, DWORD Line );
#define Track(Tag,Thing) TrackWithTag(Tag,Thing,__FILE__,__LINE__)
VOID UntrackFL( PCHAR File, DWORD Line, PVOID Thing );
VOID UntrackFL( PCHAR File, DWORD Line, PVOID Thing, DWORD Tag );
#define Untrack(Thing) UntrackFL(__FILE__,__LINE__,Thing)
VOID TrackDumpFL( PCHAR File, DWORD Line );
#define TrackDump() TrackDumpFL(__FILE__,__LINE__)
VOID TrackTag( DWORD Tag );
static __inline PVOID ExAllocateFromNPagedLookasideListX( PNPAGED_LOOKASIDE_LIST List, PCHAR File, ULONG Line ) {
PVOID Out = ExAllocateFromNPagedLookasideList( List );
if( Out ) TrackWithTag( NPLOOK_TAG, Out, File, Line );
return Out;
}
static __inline VOID ExFreeToNPagedLookasideListX( PNPAGED_LOOKASIDE_LIST List, PVOID Thing, PCHAR File, ULONG Line ) {
UntrackFL(File, Line, Thing, NPLOOK_TAG);
ExFreeToNPagedLookasideList( List, Thing );
}
static __inline PVOID ExAllocatePoolX( POOL_TYPE type, SIZE_T size, PCHAR File, ULONG Line ) {
PVOID Out = PoolAllocateBuffer( size );
PVOID Out = ExAllocatePool( type, size );
if( Out ) TrackWithTag( EXALLOC_TAG, Out, File, Line );
return Out;
}
static __inline VOID ExFreePoolX( PVOID Data, PCHAR File, ULONG Line ) {
UntrackFL(File, Line, Data);
PoolFreeBuffer(Data);
UntrackFL(File, Line, Data, EXALLOC_TAG);
ExFreePool( Data );
}
#define MEMTRACK_MAX_TAGS_TO_TRACK 64
@@ -59,11 +71,12 @@ static __inline VOID ExFreePoolX( PVOID Data, PCHAR File, ULONG Line ) {
#define Untrack(x)
#define TrackTag(x)
#define exAllocatePoolWithTag(x,y,z) ExAllocatePoolWithTag(x,y,z)
#define exAllocatePool(x,y) PoolAllocateBuffer(y)
#define exFreePool(x) PoolFreeBuffer(x)
#define exAllocatePool(x,y) ExAllocatePool(x,y)
#define exFreePool(x) ExFreePool(x)
#define exAllocateFromNPagedLookasideList(x) ExAllocateFromNPagedLookasideList(x)
#define exFreeToNPagedLookasideList(x,y) ExFreeToNPagedLookasideList(x,y)
#define TrackWithTag(w,x,y,z)
#define UntrackFL(x,y,z)
#define UntrackFL(w,x,y,z)
#endif
#endif/*MEMMTRAC_H*/
@@ -7,16 +7,6 @@
#ifndef __POOL_H
#define __POOL_H
PVOID PoolAllocateBuffer(
ULONG Size);
VOID PoolFreeBuffer(
PVOID Buffer);
PVOID TcpipAllocateFromNPagedLookasideList( PNPAGED_LOOKASIDE_LIST List );
VOID TcpipFreeToNPagedLookasideList( PNPAGED_LOOKASIDE_LIST List,
PVOID Thing );
NDIS_STATUS PrependPacket( PNDIS_PACKET Packet, PCHAR Data, UINT Len,
BOOLEAN Copy );
@@ -35,7 +35,6 @@
<file>lock.c</file>
<file>main.c</file>
<file>ninfo.c</file>
<file>pool.c</file>
<file>proto.c</file>
<file>tinfo.c</file>
<file>wait.c</file>
+8 -12
View File
@@ -318,7 +318,7 @@ NDIS_STATUS PrependPacket( PNDIS_PACKET Packet, PCHAR Data, UINT Length,
PCHAR NewBuf;
if( Copy ) {
NewBuf = ExAllocatePool( NonPagedPool, Length );
NewBuf = exAllocatePool( NonPagedPool, Length );
if( !NewBuf ) return NDIS_STATUS_RESOURCES;
RtlCopyMemory( NewBuf, Data, Length );
} else NewBuf = Data;
@@ -350,25 +350,22 @@ NDIS_STATUS AllocatePacketWithBufferX( PNDIS_PACKET *NdisPacket,
NDIS_STATUS Status;
PCHAR NewData;
NewData = ExAllocatePool( NonPagedPool, Len );
NewData = exAllocatePool( NonPagedPool, Len );
if( !NewData ) return NDIS_STATUS_RESOURCES;
TrackWithTag(EXALLOC_TAG, NewData, File, Line);
if( Data ) RtlCopyMemory(NewData, Data, Len);
NdisAllocatePacket( &Status, &Packet, GlobalPacketPool );
if( Status != NDIS_STATUS_SUCCESS ) {
UntrackFL( File, Line, NewData );
ExFreePool( NewData );
exFreePool( NewData );
return Status;
}
TrackWithTag(NDIS_PACKET_TAG, Packet, File, Line);
NdisAllocateBuffer( &Status, &Buffer, GlobalBufferPool, NewData, Len );
if( Status != NDIS_STATUS_SUCCESS ) {
UntrackFL( File, Line, NewData );
ExFreePool( NewData );
UntrackFL( File, Line, Packet );
exFreePool( NewData );
UntrackFL( File, Line, Packet, NDIS_PACKET_TAG );
FreeNdisPacket( Packet );
return Status;
}
@@ -404,14 +401,13 @@ VOID FreeNdisPacketX
NdisGetNextBuffer(Buffer, &NextBuffer);
NdisQueryBuffer(Buffer, &Data, &Length);
TI_DbgPrint(DEBUG_PBUFFER, ("Freeing ndis buffer (0x%X)\n", Buffer));
UntrackFL(File,Line,Buffer);
UntrackFL(File,Line,Buffer,NDIS_BUFFER_TAG);
NdisFreeBuffer(Buffer);
TI_DbgPrint(DEBUG_PBUFFER, ("Freeing exal buffer (0x%X)\n", Data));
UntrackFL(File,Line,Data);
ExFreePool(Data);
exFreePool(Data);
}
/* Finally free the NDIS packet discriptor */
UntrackFL(File,Line,Packet);
UntrackFL(File,Line,Packet,NDIS_PACKET_TAG);
NdisFreePacket(Packet);
}
@@ -1281,7 +1281,7 @@ VOID DispTdiQueryInformationExComplete(
QueryContext->Irp->IoStatus.Information = ByteCount;
QueryContext->Irp->IoStatus.Status = Status;
ExFreePool(QueryContext);
exFreePool(QueryContext);
}
@@ -1344,7 +1344,7 @@ NTSTATUS DispTdiQueryInformationEx(
IrpSp->Parameters.DeviceIoControl.Type3InputBuffer;
OutputBuffer = Irp->UserBuffer;
QueryContext = ExAllocatePool(NonPagedPool, sizeof(TI_QUERY_CONTEXT));
QueryContext = exAllocatePool(NonPagedPool, sizeof(TI_QUERY_CONTEXT));
if (QueryContext) {
_SEH2_TRY {
InputMdl = IoAllocateMdl(InputBuffer,
@@ -1407,7 +1407,7 @@ NTSTATUS DispTdiQueryInformationEx(
IoFreeMdl(OutputMdl);
}
ExFreePool(QueryContext);
exFreePool(QueryContext);
} else
Status = STATUS_INSUFFICIENT_RESOURCES;
} else if( InputBufferLength ==
@@ -1420,7 +1420,7 @@ NTSTATUS DispTdiQueryInformationEx(
Size = 0;
QueryContext = ExAllocatePool(NonPagedPool, sizeof(TI_QUERY_CONTEXT));
QueryContext = exAllocatePool(NonPagedPool, sizeof(TI_QUERY_CONTEXT));
if (!QueryContext) return STATUS_INSUFFICIENT_RESOURCES;
_SEH2_TRY {
@@ -1440,7 +1440,7 @@ NTSTATUS DispTdiQueryInformationEx(
if( !NT_SUCCESS(Status) || !InputMdl ) {
if( InputMdl ) IoFreeMdl( InputMdl );
ExFreePool(QueryContext);
exFreePool(QueryContext);
return Status;
}
+10 -10
View File
@@ -123,7 +123,7 @@ VOID AddrFileFree(
* Object = Pointer to address file object to free
*/
{
ExFreePool(Object);
exFreePool(Object);
}
@@ -135,7 +135,7 @@ VOID ControlChannelFree(
* Object = Pointer to address file object to free
*/
{
ExFreePool(Object);
exFreePool(Object);
}
@@ -190,7 +190,7 @@ VOID DeleteAddress(PADDRESS_FILE AddrFile)
/* Abort the request and free its resources */
TcpipReleaseSpinLock(&AddrFile->Lock, OldIrql);
(*SendRequest->Complete)(SendRequest->Context, STATUS_ADDRESS_CLOSED, 0);
ExFreePool(SendRequest);
exFreePool(SendRequest);
TcpipAcquireSpinLock(&AddrFile->Lock, &OldIrql);
CurrentEntry = NextEntry;
}
@@ -247,7 +247,7 @@ NTSTATUS FileOpenAddress(
TI_DbgPrint(MID_TRACE, ("Called (Proto %d).\n", Protocol));
AddrFile = ExAllocatePool(NonPagedPool, sizeof(ADDRESS_FILE));
AddrFile = exAllocatePool(NonPagedPool, sizeof(ADDRESS_FILE));
if (!AddrFile) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
return STATUS_INSUFFICIENT_RESOURCES;
@@ -272,7 +272,7 @@ NTSTATUS FileOpenAddress(
Matched = AddrLocateADEv4(IPv4Address, &AddrFile->Address);
if (!Matched) {
ExFreePool(AddrFile);
exFreePool(AddrFile);
TI_DbgPrint(MIN_TRACE, ("Non-local address given (0x%X).\n", DN2H(IPv4Address)));
return STATUS_INVALID_PARAMETER;
}
@@ -290,7 +290,7 @@ NTSTATUS FileOpenAddress(
AddrFile->Port != Address->Address[0].Address[0].sin_port) ||
AddrFile->Port == 0xffff)
{
ExFreePool(AddrFile);
exFreePool(AddrFile);
return STATUS_INVALID_PARAMETER;
}
@@ -306,7 +306,7 @@ NTSTATUS FileOpenAddress(
AddrFile->Port != Address->Address[0].Address[0].sin_port) ||
AddrFile->Port == 0xffff)
{
ExFreePool(AddrFile);
exFreePool(AddrFile);
return STATUS_INVALID_PARAMETER;
}
@@ -389,7 +389,7 @@ NTSTATUS FileCloseAddress(
TCPFreePort( AddrFile->Port );
if( AddrFile->Listener ) {
TCPClose( AddrFile->Listener );
ExFreePool( AddrFile->Listener );
exFreePool( AddrFile->Listener );
}
break;
@@ -518,7 +518,7 @@ NTSTATUS FileOpenControlChannel(
PCONTROL_CHANNEL ControlChannel;
TI_DbgPrint(MID_TRACE, ("Called.\n"));
ControlChannel = ExAllocatePool(NonPagedPool, sizeof(*ControlChannel));
ControlChannel = exAllocatePool(NonPagedPool, sizeof(*ControlChannel));
if (!ControlChannel) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
@@ -558,7 +558,7 @@ NTSTATUS FileCloseControlChannel(
PCONTROL_CHANNEL ControlChannel = Request->Handle.ControlChannel;
NTSTATUS Status = STATUS_SUCCESS;
ExFreePool(ControlChannel);
exFreePool(ControlChannel);
Request->Handle.ControlChannel = NULL;
return Status;
+4 -4
View File
@@ -26,7 +26,7 @@ TDI_STATUS InfoTdiQueryGetInterfaceMIB(TDIEntityID *ID,
Interface, IF, ID->tei_entity, ID->tei_instance));
OutData =
(PIFENTRY)ExAllocatePool( NonPagedPool,
(PIFENTRY)exAllocatePool( NonPagedPool,
sizeof(IFENTRY) + MAX_IFDESCR_LEN );
if( !OutData ) return TDI_NO_RESOURCES; /* Out of memory */
@@ -71,7 +71,7 @@ TDI_STATUS InfoTdiQueryGetInterfaceMIB(TDIEntityID *ID,
ID->tei_entity, ID->tei_instance, Size));
Status = InfoCopyOut( (PCHAR)OutData, Size, Buffer, BufferSize );
ExFreePool( OutData );
exFreePool( OutData );
TI_DbgPrint(DEBUG_INFO,("Returning %x\n", Status));
@@ -86,7 +86,7 @@ TDI_STATUS InfoTdiQueryGetArptableMIB(TDIEntityID *ID,
ULONG NumNeighbors = NBCopyNeighbors( Interface, NULL );
ULONG MemSize = NumNeighbors * sizeof(IPARP_ENTRY);
PIPARP_ENTRY ArpEntries =
ExAllocatePoolWithTag
exAllocatePoolWithTag
( NonPagedPool, MemSize, FOURCC('A','R','P','t') );
if( !ArpEntries ) return STATUS_NO_MEMORY;
@@ -94,7 +94,7 @@ TDI_STATUS InfoTdiQueryGetArptableMIB(TDIEntityID *ID,
Status = InfoCopyOut( (PVOID)ArpEntries, MemSize, Buffer, BufferSize );
ExFreePool( ArpEntries );
exFreePool( ArpEntries );
return Status;
}
+17 -17
View File
@@ -131,7 +131,7 @@ CP
#endif
CP
/* Allocate resources here. We release them again if something failed */
Context = ExAllocatePool(NonPagedPool, sizeof(TRANSPORT_CONTEXT));
Context = exAllocatePool(NonPagedPool, sizeof(TRANSPORT_CONTEXT));
if (!Context) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
return STATUS_INSUFFICIENT_RESOURCES;
@@ -169,7 +169,7 @@ CP
TI_DbgPrint(MIN_TRACE, ("AddressType: %\n",
Address->Address[0].AddressType));
}
PoolFreeBuffer(Context);
exFreePool(Context);
return STATUS_INVALID_PARAMETER;
}
CP
@@ -186,12 +186,12 @@ CP
Status = TiGetProtocolNumber(&IrpSp->FileObject->FileName, &Protocol);
if (!NT_SUCCESS(Status)) {
TI_DbgPrint(MIN_TRACE, ("Raw IP protocol number is invalid.\n"));
PoolFreeBuffer(Context);
exFreePool(Context);
return STATUS_INVALID_PARAMETER;
}
} else {
TI_DbgPrint(MIN_TRACE, ("Invalid device object at (0x%X).\n", DeviceObject));
PoolFreeBuffer(Context);
exFreePool(Context);
return STATUS_INVALID_PARAMETER;
}
CP
@@ -213,7 +213,7 @@ CP
if (EaInfo->EaValueLength < sizeof(PVOID)) {
TI_DbgPrint(MIN_TRACE, ("Parameters are invalid.\n"));
PoolFreeBuffer(Context);
exFreePool(Context);
return STATUS_INVALID_PARAMETER;
}
@@ -221,7 +221,7 @@ CP
if (DeviceObject != TCPDeviceObject) {
TI_DbgPrint(MIN_TRACE, ("Bad device object.\n"));
PoolFreeBuffer(Context);
exFreePool(Context);
return STATUS_INVALID_PARAMETER;
}
@@ -244,7 +244,7 @@ CP
}
if (!NT_SUCCESS(Status))
PoolFreeBuffer(Context);
exFreePool(Context);
TI_DbgPrint(DEBUG_IRP, ("Leaving. Status = (0x%X).\n", Status));
@@ -353,7 +353,7 @@ TiDispatchOpenClose(
case IRP_MJ_CLOSE:
Context = (PTRANSPORT_CONTEXT)IrpSp->FileObject->FsContext;
if (Context)
PoolFreeBuffer(Context);
exFreePool(Context);
Status = STATUS_SUCCESS;
break;
@@ -608,7 +608,7 @@ VOID NTAPI TiUnload(
IoDeleteDevice(IPDeviceObject);
if (EntityList)
PoolFreeBuffer(EntityList);
exFreePool(EntityList);
TI_DbgPrint(MAX_TRACE, ("Leaving.\n"));
}
@@ -714,7 +714,7 @@ DriverEntry(
/* Setup network layer and transport layer entities */
KeInitializeSpinLock(&EntityListLock);
EntityList = ExAllocatePool(NonPagedPool, sizeof(TDIEntityID) * MAX_TDI_ENTITIES );
EntityList = exAllocatePool(NonPagedPool, sizeof(TDIEntityID) * MAX_TDI_ENTITIES );
if (!EntityList) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
ChewShutdown();
@@ -746,7 +746,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
return STATUS_INSUFFICIENT_RESOURCES;
}
@@ -758,7 +758,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
return STATUS_INSUFFICIENT_RESOURCES;
}
@@ -787,7 +787,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
return Status;
@@ -802,7 +802,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
return Status;
@@ -818,7 +818,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
return Status;
@@ -846,7 +846,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
return Status;
@@ -865,7 +865,7 @@ DriverEntry(
IoDeleteDevice(RawIPDeviceObject);
IoDeleteDevice(UDPDeviceObject);
IoDeleteDevice(TCPDeviceObject);
ExFreePool(EntityList);
exFreePool(EntityList);
NdisFreePacketPool(GlobalPacketPool);
NdisFreeBufferPool(GlobalBufferPool);
LANUnregisterProtocol();
@@ -430,7 +430,7 @@ NDIS_STATUS AllocatePacketWithBufferX( PNDIS_PACKET *NdisPacket,
NDIS_STATUS Status;
PCHAR NewData;
NewData = ExAllocatePool( NonPagedPool, Len );
NewData = exAllocatePool( NonPagedPool, Len );
if( !NewData ) return NDIS_STATUS_NOT_ACCEPTED; // XXX
TrackWithTag(EXALLOC_TAG, NewData, File, Line);
@@ -439,14 +439,14 @@ NDIS_STATUS AllocatePacketWithBufferX( PNDIS_PACKET *NdisPacket,
NdisAllocatePacket( &Status, &Packet, GlobalPacketPool );
if( Status != NDIS_STATUS_SUCCESS ) {
ExFreePool( NewData );
exFreePool( NewData );
return Status;
}
TrackWithTag(NDIS_PACKET_TAG, Packet, File, Line);
NdisAllocateBuffer( &Status, &Buffer, GlobalBufferPool, NewData, Len );
if( Status != NDIS_STATUS_SUCCESS ) {
ExFreePool( NewData );
exFreePool( NewData );
FreeNdisPacket( Packet );
}
TrackWithTag(NDIS_BUFFER_TAG, Buffer, File, Line);
@@ -482,8 +482,7 @@ VOID FreeNdisPacketX
XNdisQueryBuffer(Buffer, &Data, &Length);
UntrackFL(File,Line,Buffer);
NdisFreeBuffer(Buffer);
UntrackFL(File,Line,Data);
ExFreePool(Data);
exFreePool(Data);
}
/* Finally free the NDIS packet discriptor */
+8 -8
View File
@@ -21,7 +21,7 @@ TDI_STATUS InfoTdiQueryGetAddrTable( PNDIS_BUFFER Buffer,
UINT Count = 0;
UINT IfCount = CountInterfaces();
PIPADDR_ENTRY IpAddress =
ExAllocatePool( NonPagedPool, sizeof( IPADDR_ENTRY ) * IfCount );
exAllocatePool( NonPagedPool, sizeof( IPADDR_ENTRY ) * IfCount );
PIPADDR_ENTRY IpCurrent = IpAddress;
IF_LIST_ITER(CurrentIF);
@@ -58,7 +58,7 @@ TDI_STATUS InfoTdiQueryGetAddrTable( PNDIS_BUFFER Buffer,
Status = InfoCopyOut( (PCHAR)IpAddress, sizeof(*IpAddress) * IfCount,
Buffer, BufferSize );
ExFreePool( IpAddress );
exFreePool( IpAddress );
TI_DbgPrint(DEBUG_INFO, ("Returning %08x\n", Status));
@@ -72,17 +72,17 @@ TDI_STATUS InfoTdiQueryGetRouteTable( PNDIS_BUFFER Buffer, PUINT BufferSize ) {
UINT RtCount = CountFIBs();
UINT Size = sizeof( IPROUTE_ENTRY ) * RtCount;
PFIB_ENTRY RCache =
ExAllocatePool( NonPagedPool, sizeof( FIB_ENTRY ) * RtCount ),
exAllocatePool( NonPagedPool, sizeof( FIB_ENTRY ) * RtCount ),
RCacheCur = RCache;
PIPROUTE_ENTRY RouteEntries = ExAllocatePool( NonPagedPool, Size ),
PIPROUTE_ENTRY RouteEntries = exAllocatePool( NonPagedPool, Size ),
RtCurrent = RouteEntries;
TI_DbgPrint(DEBUG_INFO, ("Called, routes = %d, RCache = %08x\n",
RtCount, RCache));
if( !RCache || !RouteEntries ) {
if( RCache ) ExFreePool( RCache );
if( RouteEntries ) ExFreePool( RouteEntries );
if( RCache ) exFreePool( RCache );
if( RouteEntries ) exFreePool( RouteEntries );
return TDI_NO_RESOURCES;
}
@@ -133,8 +133,8 @@ TDI_STATUS InfoTdiQueryGetRouteTable( PNDIS_BUFFER Buffer, PUINT BufferSize ) {
Status = InfoCopyOut( (PCHAR)RouteEntries, Size, Buffer, BufferSize );
ExFreePool( RouteEntries );
ExFreePool( RCache );
exFreePool( RouteEntries );
exFreePool( RCache );
TI_DbgPrint(DEBUG_INFO, ("Returning %08x\n", Status));
@@ -1,68 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS TCP/IP protocol driver
* FILE: tcpip/pool.c
* PURPOSE: Routines for controling pools
* PROGRAMMERS: Casper S. Hornstrup ([email protected])
* REVISIONS:
* CSH 01/08-2000 Created
*/
#include "precomp.h"
PVOID PoolAllocateBuffer(
ULONG Size)
/*
* FUNCTION: Returns a buffer from the free buffer pool
* RETURNS:
* Pointer to buffer, NULL if there was not enough
* free resources
*/
{
PVOID Buffer;
/* FIXME: Get buffer from a free buffer pool with enough room */
Buffer = ExAllocatePool(NonPagedPool, Size);
TI_DbgPrint(DEBUG_MEMORY, ("Allocated (%i) bytes at (0x%X).\n", Size, Buffer));
return Buffer;
}
VOID PoolFreeBuffer(
PVOID Buffer)
/*
* FUNCTION: Returns a buffer to the free buffer pool
* ARGUMENTS:
* Buffer = Buffer to return to free buffer pool
*/
{
/* FIXME: Put buffer in free buffer pool */
TI_DbgPrint(DEBUG_MEMORY, ("Freeing buffer at (0x%X).\n", Buffer));
ExFreePool(Buffer);
}
PVOID TcpipAllocateFromNPagedLookasideList( PNPAGED_LOOKASIDE_LIST List ) {
PVOID Buffer;
Buffer = ExAllocateFromNPagedLookasideList( List );
TI_DbgPrint(DEBUG_MEMORY, ("Allocated from Nonpaged Lookaside List at (0x%X).\n", Buffer));
return Buffer;
}
VOID TcpipFreeToNPagedLookasideList( PNPAGED_LOOKASIDE_LIST List,
PVOID Thing ) {
TI_DbgPrint(DEBUG_MEMORY, ("Freeing buffer (0x%X) to Nonpaged Lookaside List.\n", Thing));
ExFreeToNPagedLookasideList( List, Thing );
}
/* EOF */
+1 -1
View File
@@ -106,7 +106,7 @@ VOID IPAddressFree(
* Nothing
*/
{
PoolFreeBuffer(Object);
exFreePool(Object);
}
+2 -2
View File
@@ -33,7 +33,7 @@ VOID FreePacket(
* Object = Pointer to an IP packet structure
*/
{
TcpipFreeToNPagedLookasideList(&IPPacketList, Object);
exFreeToNPagedLookasideList(&IPPacketList, Object);
}
@@ -70,7 +70,7 @@ PIP_PACKET IPCreatePacket(ULONG Type)
{
PIP_PACKET IPPacket;
IPPacket = TcpipAllocateFromNPagedLookasideList(&IPPacketList);
IPPacket = exAllocateFromNPagedLookasideList(&IPPacketList);
if (!IPPacket)
return NULL;
+2 -2
View File
@@ -45,7 +45,7 @@ VOID NTAPI LoopReceiveWorker( PVOID Context ) {
Adapter = WorkItem->Adapter;
BytesTransferred = WorkItem->BytesTransferred;
ExFreePool( WorkItem );
exFreePool( WorkItem );
IPPacket.NdisPacket = Packet;
@@ -88,7 +88,7 @@ VOID LoopSubmitReceiveWork(
TcpipAcquireSpinLock( &LoopWorkLock, &OldIrql );
WQItem = ExAllocatePool( NonPagedPool, sizeof(LAN_WQ_ITEM) );
WQItem = exAllocatePool( NonPagedPool, sizeof(LAN_WQ_ITEM) );
if( !WQItem ) {
TcpipReleaseSpinLock( &LoopWorkLock, OldIrql );
return;
+47 -36
View File
@@ -1,8 +1,8 @@
#define MEMTRACK_NO_POOL
#include "precomp.h"
#ifdef MEMTRACK
#ifdef DBG
#define TRACK_TAG TAG('T','r','C','K')
static LIST_ENTRY AllocatedObjectsList;
@@ -29,12 +29,24 @@ VOID TrackingInit() {
0 );
}
VOID ShowTrackedThing( PCHAR What, PALLOCATION_TRACKER Thing,
PCHAR File, UINT Line ) {
/* if( ShowTag( Thing->Tag ) ) */
if( File ) {
VOID ShowTrackedThing( PCHAR What, PALLOCATION_TRACKER Thing, BOOLEAN ForceShow ) {
if (ForceShow)
{
DbgPrint("[%s] Thing %08x %c%c%c%c (%s:%d)\n",
What,
Thing->Thing,
((PCHAR)&Thing->Tag)[3],
((PCHAR)&Thing->Tag)[2],
((PCHAR)&Thing->Tag)[1],
((PCHAR)&Thing->Tag)[0],
Thing->FileName,
Thing->LineNo);
}
else
{
TI_DbgPrint(MAX_TRACE,
("[%s] Thing %08x %c%c%c%c (%s:%d) (Called from %s:%d)\n",
("[%s] Thing %08x %c%c%c%c (%s:%d)\n",
What,
Thing->Thing,
((PCHAR)&Thing->Tag)[3],
@@ -42,19 +54,7 @@ VOID ShowTrackedThing( PCHAR What, PALLOCATION_TRACKER Thing,
((PCHAR)&Thing->Tag)[1],
((PCHAR)&Thing->Tag)[0],
Thing->FileName,
Thing->LineNo,
File, Line));
} else {
TI_DbgPrint(MAX_TRACE,
( "[%s] Thing %08x %c%c%c%c (%s:%d)\n",
What,
Thing->Thing,
((PCHAR)&Thing->Tag)[3],
((PCHAR)&Thing->Tag)[2],
((PCHAR)&Thing->Tag)[1],
((PCHAR)&Thing->Tag)[0],
Thing->FileName,
Thing->LineNo ));
Thing->LineNo));
}
}
@@ -66,6 +66,15 @@ VOID TrackWithTag( DWORD Tag, PVOID Thing, PCHAR FileName, DWORD LineNo ) {
PLIST_ENTRY Entry;
PALLOCATION_TRACKER ThingInList;
if (!TrackedThing) return;
TrackedThing->Tag = Tag;
TrackedThing->Thing = Thing;
TrackedThing->FileName = FileName;
TrackedThing->LineNo = LineNo;
ShowTrackedThing( "Alloc", TrackedThing, FALSE );
TcpipAcquireSpinLock( &AllocatedObjectsLock, &OldIrql );
Entry = AllocatedObjectsList.Flink;
while( Entry != &AllocatedObjectsList ) {
@@ -74,25 +83,21 @@ VOID TrackWithTag( DWORD Tag, PVOID Thing, PCHAR FileName, DWORD LineNo ) {
RemoveEntryList(Entry);
TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
ShowTrackedThing( "Alloc", ThingInList, FileName, LineNo );
PoolFreeBuffer( ThingInList );
ShowTrackedThing( "Alloc", ThingInList, FALSE );
TrackDumpFL( FileName, LineNo );
DbgPrint("TRACK: SPECIFIED ALREADY ALLOCATED ITEM %x\n", Thing);
ShowTrackedThing( "Double Alloc (Item in list)", ThingInList, TRUE );
ShowTrackedThing( "Double Alloc (Item not in list)", TrackedThing, TRUE );
TcpipBugCheck( 0 );
ExFreeToNPagedLookasideList( &AllocatedObjectsLookasideList,
ThingInList );
}
Entry = Entry->Flink;
}
if( TrackedThing ) {
TrackedThing->Tag = Tag;
TrackedThing->Thing = Thing;
TrackedThing->FileName = FileName;
TrackedThing->LineNo = LineNo;
InsertHeadList( &AllocatedObjectsList, &TrackedThing->Entry );
ShowTrackedThing( "Alloc", TrackedThing, FileName, LineNo );
}
InsertHeadList( &AllocatedObjectsList, &TrackedThing->Entry );
TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
@@ -107,7 +112,7 @@ BOOL ShowTag( DWORD Tag ) {
return TagsToShow[i] ? TRUE : FALSE;
}
VOID UntrackFL( PCHAR File, DWORD Line, PVOID Thing ) {
VOID UntrackFL( PCHAR File, DWORD Line, PVOID Thing, DWORD Tag ) {
KIRQL OldIrql;
PLIST_ENTRY Entry;
PALLOCATION_TRACKER ThingInList;
@@ -119,19 +124,25 @@ VOID UntrackFL( PCHAR File, DWORD Line, PVOID Thing ) {
if( ThingInList->Thing == Thing ) {
RemoveEntryList(Entry);
ShowTrackedThing( "Free ", ThingInList, File, Line );
ShowTrackedThing( "Free ", ThingInList, FALSE );
if ( ThingInList->Tag != Tag ) {
DbgPrint("UNTRACK: TAG DOES NOT MATCH (%x)\n", Thing);
ShowTrackedThing("Tag Mismatch (Item in list)", ThingInList, TRUE);
TcpipBugCheck( 0 );
}
ExFreeToNPagedLookasideList( &AllocatedObjectsLookasideList,
ThingInList );
TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
/* TrackDumpFL( File, Line ); */
return;
}
Entry = Entry->Flink;
}
TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
TrackDumpFL( File, Line );
DbgPrint("UNTRACK: SPECIFIED ALREADY FREE ITEM %x\n", Thing);
TcpipBugCheck( 0 );
}
@@ -147,10 +158,10 @@ VOID TrackDumpFL( PCHAR File, DWORD Line ) {
Entry = AllocatedObjectsList.Flink;
while( Entry != &AllocatedObjectsList ) {
Thing = CONTAINING_RECORD(Entry, ALLOCATION_TRACKER, Entry);
ShowTrackedThing( "Dump ", Thing, 0, 0 );
ShowTrackedThing( "Dump ", Thing, FALSE );
Entry = Entry->Flink;
}
TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
}
#endif/*MEMTRACK*/
#endif /* DBG */
+5 -5
View File
@@ -21,7 +21,7 @@ VOID NBCompleteSend( PVOID Context,
ASSERT_KM_POINTER(Packet->Complete);
Packet->Complete( Packet->Context, Packet->Packet, Status );
TI_DbgPrint(MID_TRACE, ("Completed\n"));
PoolFreeBuffer( Packet );
exFreePool( Packet );
TI_DbgPrint(MID_TRACE, ("Freed\n"));
}
@@ -89,7 +89,7 @@ VOID NBFlushPacketQueue( PNEIGHBOR_CACHE_ENTRY NCE,
ErrorCode );
}
PoolFreeBuffer( Packet );
exFreePool( Packet );
}
}
@@ -283,7 +283,7 @@ PNEIGHBOR_CACHE_ENTRY NBAddNeighbor(
"LinkAddress (0x%X) LinkAddressLength (%d) State (0x%X)\n",
Interface, Address, LinkAddress, LinkAddressLength, State));
NCE = ExAllocatePool
NCE = exAllocatePool
(NonPagedPool, sizeof(NEIGHBOR_CACHE_ENTRY) + LinkAddressLength);
if (NCE == NULL)
{
@@ -466,7 +466,7 @@ BOOLEAN NBQueuePacket(
(DEBUG_NCACHE,
("Called. NCE (0x%X) NdisPacket (0x%X).\n", NCE, NdisPacket));
Packet = PoolAllocateBuffer( sizeof(NEIGHBOR_PACKET) );
Packet = exAllocatePool( NonPagedPool, sizeof(NEIGHBOR_PACKET) );
if( !Packet ) return FALSE;
/* FIXME: Should we limit the number of queued packets? */
@@ -529,7 +529,7 @@ VOID NBRemoveNeighbor(
*PrevNCE = CurNCE->Next;
NBFlushPacketQueue( CurNCE, TRUE, NDIS_STATUS_REQUEST_ABORTED );
ExFreePool(CurNCE);
exFreePool(CurNCE);
break;
}
+2 -2
View File
@@ -17,7 +17,7 @@ NTSTATUS PortsStartup( PPORT_SET PortSet,
PortSet->PortsToOversee = PortsToManage;
PortSet->ProtoBitBuffer =
PoolAllocateBuffer( (PortSet->PortsToOversee + 7) / 8 );
exAllocatePool( NonPagedPool, (PortSet->PortsToOversee + 7) / 8 );
if(!PortSet->ProtoBitBuffer) return STATUS_INSUFFICIENT_RESOURCES;
RtlInitializeBitMap( &PortSet->ProtoBitmap,
PortSet->ProtoBitBuffer,
@@ -28,7 +28,7 @@ NTSTATUS PortsStartup( PPORT_SET PortSet,
}
VOID PortsShutdown( PPORT_SET PortSet ) {
PoolFreeBuffer( PortSet->ProtoBitBuffer );
exFreePool( PortSet->ProtoBitBuffer );
}
VOID DeallocatePort( PPORT_SET PortSet, ULONG Port ) {
+8 -8
View File
@@ -41,7 +41,7 @@ PIPDATAGRAM_HOLE CreateHoleDescriptor(
TI_DbgPrint(DEBUG_IP, ("Called. First (%d) Last (%d).\n", First, Last));
Hole = TcpipAllocateFromNPagedLookasideList(&IPHoleList);
Hole = exAllocateFromNPagedLookasideList(&IPHoleList);
if (!Hole) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
return NULL;
@@ -82,7 +82,7 @@ VOID FreeIPDR(
TI_DbgPrint(DEBUG_IP, ("Freeing hole descriptor at (0x%X).\n", CurrentH));
/* And free the hole descriptor */
TcpipFreeToNPagedLookasideList(&IPHoleList, CurrentH);
exFreeToNPagedLookasideList(&IPHoleList, CurrentH);
CurrentEntry = NextEntry;
}
@@ -103,13 +103,13 @@ VOID FreeIPDR(
TI_DbgPrint(DEBUG_IP, ("Freeing fragment at (0x%X).\n", CurrentF));
/* And free the fragment descriptor */
TcpipFreeToNPagedLookasideList(&IPFragmentList, CurrentF);
exFreeToNPagedLookasideList(&IPFragmentList, CurrentF);
CurrentEntry = NextEntry;
}
TI_DbgPrint(DEBUG_IP, ("Freeing IPDR data at (0x%X).\n", IPDR));
TcpipFreeToNPagedLookasideList(&IPDRList, IPDR);
exFreeToNPagedLookasideList(&IPDRList, IPDR);
}
@@ -308,7 +308,7 @@ VOID ProcessFragment(
TI_DbgPrint(DEBUG_IP, ("Starting new assembly.\n"));
/* We don't have a reassembly structure, create one */
IPDR = TcpipAllocateFromNPagedLookasideList(&IPDRList);
IPDR = exAllocateFromNPagedLookasideList(&IPDRList);
if (!IPDR)
/* We don't have the resources to process this packet, discard it */
return;
@@ -319,7 +319,7 @@ VOID ProcessFragment(
Hole = CreateHoleDescriptor(0, 65536);
if (!Hole) {
/* We don't have the resources to process this packet, discard it */
TcpipFreeToNPagedLookasideList(&IPDRList, IPDR);
exFreeToNPagedLookasideList(&IPDRList, IPDR);
return;
}
AddrInitIPv4(&IPDR->SrcAddr, IPv4Header->SrcAddr);
@@ -388,7 +388,7 @@ VOID ProcessFragment(
/* Put the new hole descriptor in the list */
InsertTailList(&IPDR->HoleListHead, &Hole->ListEntry);
} else
TcpipFreeToNPagedLookasideList(&IPHoleList, Hole);
exFreeToNPagedLookasideList(&IPHoleList, Hole);
/* If this is the first fragment, save the IP header */
if (FragFirst == 0) {
@@ -402,7 +402,7 @@ VOID ProcessFragment(
/* Create a buffer, copy the data into it and put it
in the fragment list */
Fragment = TcpipAllocateFromNPagedLookasideList(&IPFragmentList);
Fragment = exAllocateFromNPagedLookasideList(&IPFragmentList);
if (!Fragment) {
/* We don't have the resources to process this packet, discard it */
Cleanup(&IPDR->Lock, OldIrql, IPDR);
+2 -2
View File
@@ -51,7 +51,7 @@ VOID FreeFIB(
* Object = Pointer to an forward information base structure
*/
{
PoolFreeBuffer(Object);
exFreePool(Object);
}
@@ -213,7 +213,7 @@ PFIB_ENTRY RouterAddRoute(
A2S(Netmask),
A2S(&Router->Address)));
FIBE = PoolAllocateBuffer(sizeof(FIB_ENTRY));
FIBE = exAllocatePool(NonPagedPool, sizeof(FIB_ENTRY));
if (!FIBE) {
TI_DbgPrint(MIN_TRACE, ("Insufficient resources.\n"));
return NULL;
+2 -2
View File
@@ -212,14 +212,14 @@ NTSTATUS SendFragments(
if (!PrepareNextFragment(IFC)) {
FreeNdisPacket(IFC->NdisPacket);
ExFreePool(IFC);
exFreePool(IFC);
return NDIS_STATUS_FAILURE;
}
if (!NT_SUCCESS((NdisStatus = IPSendFragment(IFC->NdisPacket, NCE, IFC))))
{
FreeNdisPacket(IFC->NdisPacket);
ExFreePool(IFC);
exFreePool(IFC);
}
return NdisStatus;
@@ -115,7 +115,7 @@ VOID TCPAbortListenForSocket( PCONNECTION_ENDPOINT Listener,
if( Bucket->AssociatedEndpoint == Connection ) {
RemoveEntryList( &Bucket->Entry );
ExFreePool( Bucket );
exFreePool( Bucket );
break;
}
@@ -142,7 +142,7 @@ NTSTATUS TCPAccept
(PTDI_REQUEST_KERNEL)Request );
if( Status == STATUS_PENDING ) {
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
Bucket = exAllocatePool( NonPagedPool, sizeof(*Bucket) );
if( Bucket ) {
Bucket->AssociatedEndpoint = Connection;
+10 -10
View File
@@ -119,7 +119,7 @@ int TCPSleep( void *ClientData, void *token, int priority, char *msg,
("Called TSLEEP: tok = %x, pri = %d, wmesg = %s, tmio = %x\n",
token, priority, msg, tmio));
SleepingThread = PoolAllocateBuffer( sizeof( *SleepingThread ) );
SleepingThread = exAllocatePool( NonPagedPool, sizeof( *SleepingThread ) );
if( SleepingThread ) {
KeInitializeEvent( &SleepingThread->Event, NotificationEvent, FALSE );
SleepingThread->SleepToken = token;
@@ -146,7 +146,7 @@ int TCPSleep( void *ClientData, void *token, int priority, char *msg,
TcpipRecursiveMutexEnter( &TCPLock, TRUE );
PoolFreeBuffer( SleepingThread );
exFreePool( SleepingThread );
} else
return OSK_ENOBUFS;
@@ -238,22 +238,22 @@ void *TCPMalloc( void *ClientData,
if ( ! Found ) {
if ( ArrayAllocated <= ArrayUsed ) {
NewSize = ( 0 == ArrayAllocated ? 16 : 2 * ArrayAllocated );
NewArray = PoolAllocateBuffer( 2 * NewSize * sizeof( OSK_UINT ) );
NewArray = exAllocatePool( NonPagedPool, 2 * NewSize * sizeof( OSK_UINT ) );
if ( NULL != NewArray ) {
if ( 0 != ArrayAllocated ) {
memcpy( NewArray, Sizes,
ArrayAllocated * sizeof( OSK_UINT ) );
PoolFreeBuffer( Sizes );
exFreePool( Sizes );
memcpy( NewArray + NewSize, Counts,
ArrayAllocated * sizeof( OSK_UINT ) );
PoolFreeBuffer( Counts );
exFreePool( Counts );
}
Sizes = NewArray;
Counts = NewArray + NewSize;
ArrayAllocated = NewSize;
} else if ( 0 != ArrayAllocated ) {
PoolFreeBuffer( Sizes );
PoolFreeBuffer( Counts );
exFreePool( Sizes );
exFreePool( Counts );
ArrayAllocated = 0;
}
}
@@ -281,7 +281,7 @@ void *TCPMalloc( void *ClientData,
v = ExAllocateFromNPagedLookasideList( &LargeLookasideList );
Signature = SIGNATURE_LARGE;
} else {
v = PoolAllocateBuffer( Bytes + sizeof(ULONG) );
v = ExAllocatePool( NonPagedPool, Bytes + sizeof(ULONG) );
Signature = SIGNATURE_OTHER;
}
if( v ) {
@@ -297,7 +297,7 @@ void TCPFree( void *ClientData,
void *data, OSK_PCHAR File, OSK_UINT Line ) {
ULONG Signature;
UntrackFL( (PCHAR)File, Line, data );
UntrackFL( (PCHAR)File, Line, data, FOURCC('f','b','s','d') );
data = (void *)((char *) data - sizeof(ULONG));
Signature = *((ULONG *) data);
if ( SIGNATURE_SMALL == Signature ) {
@@ -305,7 +305,7 @@ void TCPFree( void *ClientData,
} else if ( SIGNATURE_LARGE == Signature ) {
ExFreeToNPagedLookasideList( &LargeLookasideList, data );
} else if ( SIGNATURE_OTHER == Signature ) {
PoolFreeBuffer( data );
ExFreePool( data );
} else {
ASSERT( FALSE );
}
+13 -13
View File
@@ -53,7 +53,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Complete( Bucket->Request.RequestContext, Status, 0 );
/* Frees the bucket allocated in TCPConnect */
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
}
}
@@ -90,7 +90,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
break;
} else {
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
}
}
}
@@ -142,7 +142,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Complete( Bucket->Request.RequestContext,
STATUS_SUCCESS, Received );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
} else if( Status == STATUS_PENDING ) {
InsertHeadList
( &Connection->ReceiveRequest, &Bucket->Entry );
@@ -152,7 +152,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
("Completing Receive request: %x %x\n",
Bucket->Request, Status));
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
}
}
}
@@ -201,7 +201,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Complete( Bucket->Request.RequestContext,
STATUS_SUCCESS, Sent );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
} else if( Status == STATUS_PENDING ) {
InsertHeadList
( &Connection->SendRequest, &Bucket->Entry );
@@ -211,7 +211,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
("Completing Send request: %x %x\n",
Bucket->Request, Status));
Complete( Bucket->Request.RequestContext, Status, 0 );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
}
}
}
@@ -238,7 +238,7 @@ static VOID HandleSignalledConnection( PCONNECTION_ENDPOINT Connection,
Bucket = CONTAINING_RECORD( Entry, TDI_BUCKET, Entry );
Complete = Bucket->Request.RequestNotifyObject;
Complete( Bucket->Request.RequestContext, IrpStatus[i], 0 );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
}
}
}
@@ -260,7 +260,7 @@ VOID DrainSignals() {
PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint( PVOID ClientContext ) {
PCONNECTION_ENDPOINT Connection =
ExAllocatePool(NonPagedPool, sizeof(CONNECTION_ENDPOINT));
exAllocatePool(NonPagedPool, sizeof(CONNECTION_ENDPOINT));
if (!Connection)
return Connection;
@@ -283,7 +283,7 @@ PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint( PVOID ClientContext ) {
VOID TCPFreeConnectionEndpoint( PCONNECTION_ENDPOINT Connection ) {
TCPClose( Connection );
ExFreePool( Connection );
exFreePool( Connection );
}
NTSTATUS TCPSocket( PCONNECTION_ENDPOINT Connection,
@@ -545,7 +545,7 @@ NTSTATUS TCPConnect
TI_DbgPrint(DEBUG_TCP,("TCPConnect: Called\n"));
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
Bucket = exAllocatePool( NonPagedPool, sizeof(*Bucket) );
if( !Bucket ) return STATUS_NO_MEMORY;
TcpipRecursiveMutexEnter( &TCPLock, TRUE );
@@ -695,7 +695,7 @@ NTSTATUS TCPReceiveData
/* Keep this request around ... there was no data yet */
if( Status == STATUS_PENDING ) {
/* Freed in TCPSocketState */
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
Bucket = exAllocatePool( NonPagedPool, sizeof(*Bucket) );
if( !Bucket ) {
TI_DbgPrint(DEBUG_TCP,("Failed to allocate bucket\n"));
TcpipRecursiveMutexLeave( &TCPLock );
@@ -754,7 +754,7 @@ NTSTATUS TCPSendData
/* Keep this request around ... there was no data yet */
if( Status == STATUS_PENDING ) {
/* Freed in TCPSocketState */
Bucket = ExAllocatePool( NonPagedPool, sizeof(*Bucket) );
Bucket = exAllocatePool( NonPagedPool, sizeof(*Bucket) );
if( !Bucket ) {
TI_DbgPrint(DEBUG_TCP,("Failed to allocate bucket\n"));
TcpipRecursiveMutexLeave( &TCPLock );
@@ -845,7 +845,7 @@ VOID TCPRemoveIRP( PCONNECTION_ENDPOINT Endpoint, PIRP Irp ) {
if( Bucket->Request.RequestContext == Irp ) {
RemoveEntryList( &Bucket->Entry );
PoolFreeBuffer( Bucket );
exFreePool( Bucket );
break;
}
}
@@ -8,7 +8,7 @@
#define FBSD_MALLOC FOURCC('d','s','b','f')
#define EXALLOC_TAG FOURCC('E','x','A','l')
#ifdef MEMTRACK
#ifdef DBG
#define MTMARK() TrackDumpFL(__FILE__, __LINE__)
#define NdisAllocateBuffer(x,y,z,a,b) { \
NdisAllocateBuffer(x,y,z,a,b); \
@@ -71,8 +71,10 @@ static __inline VOID ExFreePoolX( PVOID Data, PCHAR File, ULONG Line ) {
#define exFreePool(x) ExFreePool(x)
#define exAllocatePool(x,y) ExAllocatePool(x,y)
#define exAllocatePoolWithTag(x,y,z) ExAllocatePoolWithTag(x,y,z)
#define TrackWithTag(a,b,c,d)
#define UntrackFL(a,b,c)
#define exAllocateFromNPagedLookasideList(x) ExAllocateFromNPagedLookasideList(x)
#define exFreeToNPagedLookasideList(x,y) ExFreeToNPagedLookasideList(x,y)
#define TrackWithTag(w,x,y,z)
#define UntrackFL(w,x,y,z)
#endif
#endif/*MEMMTRAC_H*/