mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 12:23:31 +00:00
- Merge the rest of my changes
svn path=/trunk/; revision=38545
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
@@ -106,7 +106,7 @@ VOID IPAddressFree(
|
||||
* Nothing
|
||||
*/
|
||||
{
|
||||
PoolFreeBuffer(Object);
|
||||
exFreePool(Object);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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*/
|
||||
|
||||
Reference in New Issue
Block a user