From 6fb0f9aa2dd59cf8239a7fc0ec699a8cf21358b0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 4 Jan 2009 05:33:43 +0000 Subject: [PATCH] - Merge the rest of my changes svn path=/trunk/; revision=38545 --- reactos/drivers/network/tcpip/datalink/lan.c | 2 +- .../drivers/network/tcpip/include/memtrack.h | 35 +++++--- reactos/drivers/network/tcpip/include/pool.h | 10 --- reactos/drivers/network/tcpip/tcpip.rbuild | 1 - reactos/drivers/network/tcpip/tcpip/buffer.c | 20 ++--- .../drivers/network/tcpip/tcpip/dispatch.c | 10 +-- .../drivers/network/tcpip/tcpip/fileobjs.c | 20 ++--- reactos/drivers/network/tcpip/tcpip/iinfo.c | 8 +- reactos/drivers/network/tcpip/tcpip/main.c | 34 ++++---- .../drivers/network/tcpip/tcpip/mockbuffer.c | 9 +- reactos/drivers/network/tcpip/tcpip/ninfo.c | 16 ++-- reactos/drivers/network/tcpip/tcpip/pool.c | 68 --------------- reactos/lib/drivers/ip/network/address.c | 2 +- reactos/lib/drivers/ip/network/ip.c | 4 +- reactos/lib/drivers/ip/network/loopback.c | 4 +- reactos/lib/drivers/ip/network/memtrack.c | 83 +++++++++++-------- reactos/lib/drivers/ip/network/neighbor.c | 10 +-- reactos/lib/drivers/ip/network/ports.c | 4 +- reactos/lib/drivers/ip/network/receive.c | 16 ++-- reactos/lib/drivers/ip/network/router.c | 4 +- reactos/lib/drivers/ip/network/transmit.c | 4 +- reactos/lib/drivers/ip/transport/tcp/accept.c | 4 +- reactos/lib/drivers/ip/transport/tcp/event.c | 20 ++--- reactos/lib/drivers/ip/transport/tcp/tcp.c | 26 +++--- .../lib/drivers/oskittcp/include/memtrack.h | 8 +- 25 files changed, 182 insertions(+), 240 deletions(-) delete mode 100644 reactos/drivers/network/tcpip/tcpip/pool.c diff --git a/reactos/drivers/network/tcpip/datalink/lan.c b/reactos/drivers/network/tcpip/datalink/lan.c index 5d6fdb8c12a..b6041f67f32 100644 --- a/reactos/drivers/network/tcpip/datalink/lan.c +++ b/reactos/drivers/network/tcpip/datalink/lan.c @@ -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; diff --git a/reactos/drivers/network/tcpip/include/memtrack.h b/reactos/drivers/network/tcpip/include/memtrack.h index 72565442c17..37a736add2a 100644 --- a/reactos/drivers/network/tcpip/include/memtrack.h +++ b/reactos/drivers/network/tcpip/include/memtrack.h @@ -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*/ diff --git a/reactos/drivers/network/tcpip/include/pool.h b/reactos/drivers/network/tcpip/include/pool.h index 8aa60c76606..846fcea6935 100644 --- a/reactos/drivers/network/tcpip/include/pool.h +++ b/reactos/drivers/network/tcpip/include/pool.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 ); diff --git a/reactos/drivers/network/tcpip/tcpip.rbuild b/reactos/drivers/network/tcpip/tcpip.rbuild index a8f5f329303..6fa25f70889 100644 --- a/reactos/drivers/network/tcpip/tcpip.rbuild +++ b/reactos/drivers/network/tcpip/tcpip.rbuild @@ -35,7 +35,6 @@ lock.c main.c ninfo.c - pool.c proto.c tinfo.c wait.c diff --git a/reactos/drivers/network/tcpip/tcpip/buffer.c b/reactos/drivers/network/tcpip/tcpip/buffer.c index 35b2d1f555f..54ffe641c58 100644 --- a/reactos/drivers/network/tcpip/tcpip/buffer.c +++ b/reactos/drivers/network/tcpip/tcpip/buffer.c @@ -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); } diff --git a/reactos/drivers/network/tcpip/tcpip/dispatch.c b/reactos/drivers/network/tcpip/tcpip/dispatch.c index e84adf0ba68..1aed38ad07a 100644 --- a/reactos/drivers/network/tcpip/tcpip/dispatch.c +++ b/reactos/drivers/network/tcpip/tcpip/dispatch.c @@ -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; } diff --git a/reactos/drivers/network/tcpip/tcpip/fileobjs.c b/reactos/drivers/network/tcpip/tcpip/fileobjs.c index 414cf5de705..b2f4df631c0 100644 --- a/reactos/drivers/network/tcpip/tcpip/fileobjs.c +++ b/reactos/drivers/network/tcpip/tcpip/fileobjs.c @@ -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; diff --git a/reactos/drivers/network/tcpip/tcpip/iinfo.c b/reactos/drivers/network/tcpip/tcpip/iinfo.c index 01d0f53497e..2da0df136c0 100644 --- a/reactos/drivers/network/tcpip/tcpip/iinfo.c +++ b/reactos/drivers/network/tcpip/tcpip/iinfo.c @@ -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; } diff --git a/reactos/drivers/network/tcpip/tcpip/main.c b/reactos/drivers/network/tcpip/tcpip/main.c index 7ef1dcf8552..1f6eb28bca8 100644 --- a/reactos/drivers/network/tcpip/tcpip/main.c +++ b/reactos/drivers/network/tcpip/tcpip/main.c @@ -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(); diff --git a/reactos/drivers/network/tcpip/tcpip/mockbuffer.c b/reactos/drivers/network/tcpip/tcpip/mockbuffer.c index e9420b8fa51..62d0397cf06 100644 --- a/reactos/drivers/network/tcpip/tcpip/mockbuffer.c +++ b/reactos/drivers/network/tcpip/tcpip/mockbuffer.c @@ -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 */ diff --git a/reactos/drivers/network/tcpip/tcpip/ninfo.c b/reactos/drivers/network/tcpip/tcpip/ninfo.c index f39b35b5929..958121215fd 100644 --- a/reactos/drivers/network/tcpip/tcpip/ninfo.c +++ b/reactos/drivers/network/tcpip/tcpip/ninfo.c @@ -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)); diff --git a/reactos/drivers/network/tcpip/tcpip/pool.c b/reactos/drivers/network/tcpip/tcpip/pool.c deleted file mode 100644 index 9ded1ac6639..00000000000 --- a/reactos/drivers/network/tcpip/tcpip/pool.c +++ /dev/null @@ -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 (chorns@users.sourceforge.net) - * 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 */ diff --git a/reactos/lib/drivers/ip/network/address.c b/reactos/lib/drivers/ip/network/address.c index e8a37f0f7ba..9bd88171bb9 100644 --- a/reactos/lib/drivers/ip/network/address.c +++ b/reactos/lib/drivers/ip/network/address.c @@ -106,7 +106,7 @@ VOID IPAddressFree( * Nothing */ { - PoolFreeBuffer(Object); + exFreePool(Object); } diff --git a/reactos/lib/drivers/ip/network/ip.c b/reactos/lib/drivers/ip/network/ip.c index d1529f3aa1d..8a01b83228b 100644 --- a/reactos/lib/drivers/ip/network/ip.c +++ b/reactos/lib/drivers/ip/network/ip.c @@ -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; diff --git a/reactos/lib/drivers/ip/network/loopback.c b/reactos/lib/drivers/ip/network/loopback.c index 8c331b32bf6..71fcc5223e3 100644 --- a/reactos/lib/drivers/ip/network/loopback.c +++ b/reactos/lib/drivers/ip/network/loopback.c @@ -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; diff --git a/reactos/lib/drivers/ip/network/memtrack.c b/reactos/lib/drivers/ip/network/memtrack.c index 9fbd823f764..d0feb84e511 100644 --- a/reactos/lib/drivers/ip/network/memtrack.c +++ b/reactos/lib/drivers/ip/network/memtrack.c @@ -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 */ diff --git a/reactos/lib/drivers/ip/network/neighbor.c b/reactos/lib/drivers/ip/network/neighbor.c index e0f3938d9a9..9f1111f8541 100644 --- a/reactos/lib/drivers/ip/network/neighbor.c +++ b/reactos/lib/drivers/ip/network/neighbor.c @@ -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; } diff --git a/reactos/lib/drivers/ip/network/ports.c b/reactos/lib/drivers/ip/network/ports.c index 468010371f5..c1697a462ad 100644 --- a/reactos/lib/drivers/ip/network/ports.c +++ b/reactos/lib/drivers/ip/network/ports.c @@ -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 ) { diff --git a/reactos/lib/drivers/ip/network/receive.c b/reactos/lib/drivers/ip/network/receive.c index 9313b1959fc..aab94251de1 100644 --- a/reactos/lib/drivers/ip/network/receive.c +++ b/reactos/lib/drivers/ip/network/receive.c @@ -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); diff --git a/reactos/lib/drivers/ip/network/router.c b/reactos/lib/drivers/ip/network/router.c index 4706efb9414..9ad58478177 100644 --- a/reactos/lib/drivers/ip/network/router.c +++ b/reactos/lib/drivers/ip/network/router.c @@ -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; diff --git a/reactos/lib/drivers/ip/network/transmit.c b/reactos/lib/drivers/ip/network/transmit.c index 2c2c8d3320f..1d78bfd773a 100644 --- a/reactos/lib/drivers/ip/network/transmit.c +++ b/reactos/lib/drivers/ip/network/transmit.c @@ -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; diff --git a/reactos/lib/drivers/ip/transport/tcp/accept.c b/reactos/lib/drivers/ip/transport/tcp/accept.c index b588b7db1df..6057da38310 100644 --- a/reactos/lib/drivers/ip/transport/tcp/accept.c +++ b/reactos/lib/drivers/ip/transport/tcp/accept.c @@ -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; diff --git a/reactos/lib/drivers/ip/transport/tcp/event.c b/reactos/lib/drivers/ip/transport/tcp/event.c index fcae4da093c..f6150e9fa20 100644 --- a/reactos/lib/drivers/ip/transport/tcp/event.c +++ b/reactos/lib/drivers/ip/transport/tcp/event.c @@ -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 ); } diff --git a/reactos/lib/drivers/ip/transport/tcp/tcp.c b/reactos/lib/drivers/ip/transport/tcp/tcp.c index 5579813ba21..cfbca367c1b 100644 --- a/reactos/lib/drivers/ip/transport/tcp/tcp.c +++ b/reactos/lib/drivers/ip/transport/tcp/tcp.c @@ -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; } } diff --git a/reactos/lib/drivers/oskittcp/include/memtrack.h b/reactos/lib/drivers/oskittcp/include/memtrack.h index d02fafa54b9..db076cbde39 100644 --- a/reactos/lib/drivers/oskittcp/include/memtrack.h +++ b/reactos/lib/drivers/oskittcp/include/memtrack.h @@ -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*/