[AFD] Introduce and use pool tags. Thanks go to Arty for assisting me with this....
[reactos.git] / drivers / network / afd / afd / listen.c
index c47bad9..9a5a50b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id$
+/*
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
  * FILE:             drivers/net/afd/afd/listen.c
@@ -7,6 +7,7 @@
  * UPDATE HISTORY:
  * 20040708 Created
  */
+
 #include "afd.h"
 
 static NTSTATUS SatisfyAccept( PAFD_DEVICE_EXTENSION DeviceExt,
@@ -16,15 +17,21 @@ static NTSTATUS SatisfyAccept( PAFD_DEVICE_EXTENSION DeviceExt,
     PAFD_FCB FCB = NewFileObject->FsContext;
     NTSTATUS Status;
 
+    UNREFERENCED_PARAMETER(DeviceExt);
+
     if( !SocketAcquireStateLock( FCB ) )
         return LostSocket( Irp );
 
     /* Transfer the connection to the new socket, launch the opening read */
-    AFD_DbgPrint(MID_TRACE,("Completing a real accept (FCB %x)\n", FCB));
+    AFD_DbgPrint(MID_TRACE,("Completing a real accept (FCB %p)\n", FCB));
 
     FCB->Connection = Qelt->Object;
 
-    if( FCB->RemoteAddress ) ExFreePool( FCB->RemoteAddress );
+    if (FCB->RemoteAddress)
+    {
+        ExFreePoolWithTag(FCB->RemoteAddress, TAG_AFD_TRANSPORT_ADDRESS);
+    }
+
     FCB->RemoteAddress =
         TaCopyTransportAddress( Qelt->ConnInfo->RemoteAddress );
 
@@ -49,8 +56,8 @@ static NTSTATUS SatisfyPreAccept( PIRP Irp, PAFD_TDI_OBJECT_QELT Qelt ) {
 
     ListenReceive->SequenceNumber = Qelt->Seq;
 
-    AFD_DbgPrint(MID_TRACE,("Giving SEQ %d to userland\n", Qelt->Seq));
-    AFD_DbgPrint(MID_TRACE,("Socket Address (K) %x (U) %x\n",
+    AFD_DbgPrint(MID_TRACE,("Giving SEQ %u to userland\n", Qelt->Seq));
+    AFD_DbgPrint(MID_TRACE,("Socket Address (K) %p (U) %p\n",
                             &ListenReceive->Address,
                             Qelt->ConnInfo->RemoteAddress));
 
@@ -61,9 +68,9 @@ static NTSTATUS SatisfyPreAccept( PIRP Irp, PAFD_TDI_OBJECT_QELT Qelt ) {
 
     AFD_DbgPrint(MID_TRACE,("IPAddr->TAAddressCount %d\n",
                             IPAddr->TAAddressCount));
-    AFD_DbgPrint(MID_TRACE,("IPAddr->Address[0].AddressType %d\n",
+    AFD_DbgPrint(MID_TRACE,("IPAddr->Address[0].AddressType %u\n",
                             IPAddr->Address[0].AddressType));
-    AFD_DbgPrint(MID_TRACE,("IPAddr->Address[0].AddressLength %d\n",
+    AFD_DbgPrint(MID_TRACE,("IPAddr->Address[0].AddressLength %u\n",
                             IPAddr->Address[0].AddressLength));
     AFD_DbgPrint(MID_TRACE,("IPAddr->Address[0].Address[0].sin_port %x\n",
                             IPAddr->Address[0].Address[0].sin_port));
@@ -79,6 +86,7 @@ static NTSTATUS SatisfyPreAccept( PIRP Irp, PAFD_TDI_OBJECT_QELT Qelt ) {
     return STATUS_SUCCESS;
 }
 
+static IO_COMPLETION_ROUTINE ListenComplete;
 static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
                                       PIRP Irp,
                                       PVOID Context ) {
@@ -88,6 +96,8 @@ static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
     PLIST_ENTRY NextIrpEntry;
     PIRP NextIrp;
 
+    UNREFERENCED_PARAMETER(DeviceObject);
+
     if( !SocketAcquireStateLock( FCB ) )
         return STATUS_FILE_CLOSED;
 
@@ -109,13 +119,17 @@ static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
         /* Free ConnectionReturnInfo and ConnectionCallInfo */
         if (FCB->ListenIrp.ConnectionReturnInfo)
         {
-            ExFreePool(FCB->ListenIrp.ConnectionReturnInfo);
+            ExFreePoolWithTag(FCB->ListenIrp.ConnectionReturnInfo,
+                              TAG_AFD_TDI_CONNECTION_INFORMATION);
+
             FCB->ListenIrp.ConnectionReturnInfo = NULL;
         }
 
         if (FCB->ListenIrp.ConnectionCallInfo)
         {
-            ExFreePool(FCB->ListenIrp.ConnectionCallInfo);
+            ExFreePoolWithTag(FCB->ListenIrp.ConnectionCallInfo,
+                              TAG_AFD_TDI_CONNECTION_INFORMATION);
+
             FCB->ListenIrp.ConnectionCallInfo = NULL;
         }
 
@@ -132,7 +146,10 @@ static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
         return Irp->IoStatus.Status;
     }
 
-    Qelt = ExAllocatePool( NonPagedPool, sizeof(*Qelt) );
+    Qelt = ExAllocatePoolWithTag(NonPagedPool,
+                                 sizeof(*Qelt),
+                                 TAG_AFD_ACCEPT_QUEUE);
+
     if( !Qelt ) {
         Status = STATUS_NO_MEMORY;
     } else {
@@ -141,7 +158,7 @@ static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
 
         Qelt->Object = FCB->Connection;
         Qelt->Seq = FCB->ConnSeq++;
-        AFD_DbgPrint(MID_TRACE,("Address Type: %d (RA %x)\n",
+        AFD_DbgPrint(MID_TRACE,("Address Type: %u (RA %p)\n",
                                 AddressType,
                                 FCB->ListenIrp.
                                 ConnectionReturnInfo->RemoteAddress));
@@ -185,7 +202,6 @@ static NTSTATUS NTAPI ListenComplete( PDEVICE_OBJECT DeviceObject,
                             FCB->Connection.Object,
                             &FCB->ListenIrp.ConnectionCallInfo,
                             &FCB->ListenIrp.ConnectionReturnInfo,
-                            &FCB->ListenIrp.Iosb,
                             ListenComplete,
                             FCB );
 
@@ -213,7 +229,9 @@ NTSTATUS AfdListenSocket( PDEVICE_OBJECT DeviceObject, PIRP Irp,
     PAFD_FCB FCB = FileObject->FsContext;
     PAFD_LISTEN_DATA ListenReq;
 
-    AFD_DbgPrint(MID_TRACE,("Called on %x\n", FCB));
+    UNREFERENCED_PARAMETER(DeviceObject);
+
+    AFD_DbgPrint(MID_TRACE,("Called on %p\n", FCB));
 
     if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
 
@@ -229,7 +247,7 @@ NTSTATUS AfdListenSocket( PDEVICE_OBJECT DeviceObject, PIRP Irp,
 
     FCB->DelayedAccept = ListenReq->UseDelayedAcceptance;
 
-    AFD_DbgPrint(MID_TRACE,("ADDRESSFILE: %x\n", FCB->AddressFile.Handle));
+    AFD_DbgPrint(MID_TRACE,("ADDRESSFILE: %p\n", FCB->AddressFile.Handle));
 
     Status = WarmSocketForConnection( FCB );
 
@@ -249,7 +267,9 @@ NTSTATUS AfdListenSocket( PDEVICE_OBJECT DeviceObject, PIRP Irp,
 
     if (!NT_SUCCESS(Status))
     {
-        ExFreePool(FCB->ListenIrp.ConnectionCallInfo);
+        ExFreePoolWithTag(FCB->ListenIrp.ConnectionCallInfo,
+                          TAG_AFD_TDI_CONNECTION_INFORMATION);
+
         FCB->ListenIrp.ConnectionCallInfo = NULL;
         return UnlockAndMaybeComplete(FCB, Status, Irp, 0);
     }
@@ -260,7 +280,6 @@ NTSTATUS AfdListenSocket( PDEVICE_OBJECT DeviceObject, PIRP Irp,
                         FCB->Connection.Object,
                         &FCB->ListenIrp.ConnectionCallInfo,
                         &FCB->ListenIrp.ConnectionReturnInfo,
-                        &FCB->ListenIrp.Iosb,
                         ListenComplete,
                         FCB );
 
@@ -277,6 +296,8 @@ NTSTATUS AfdWaitForListen( PDEVICE_OBJECT DeviceObject, PIRP Irp,
     PAFD_FCB FCB = FileObject->FsContext;
     NTSTATUS Status;
 
+    UNREFERENCED_PARAMETER(DeviceObject);
+
     AFD_DbgPrint(MID_TRACE,("Called\n"));
 
     if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
@@ -335,7 +356,7 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
         PAFD_TDI_OBJECT_QELT PendingConnObj =
             CONTAINING_RECORD( PendingConn, AFD_TDI_OBJECT_QELT, ListEntry );
 
-        AFD_DbgPrint(MID_TRACE,("Comparing Seq %d to Q %d\n",
+        AFD_DbgPrint(MID_TRACE,("Comparing Seq %u to Q %u\n",
                                 AcceptData->SequenceNumber,
                                 PendingConnObj->Seq));
 
@@ -364,7 +385,7 @@ NTSTATUS AfdAccept( PDEVICE_OBJECT DeviceObject, PIRP Irp,
 
             AFD_DbgPrint(MID_TRACE,("Completed a wait for accept\n"));
 
-            ExFreePool( PendingConnObj );
+            ExFreePoolWithTag(PendingConnObj, TAG_AFD_ACCEPT_QUEUE);
 
             if( !IsListEmpty( &FCB->PendingConnections ) )
             {