Don't push an already freed irp to the list (in IoFreeIrp).
Modified: trunk/reactos/ntoskrnl/io/irp.c

Modified: trunk/reactos/ntoskrnl/io/irp.c
--- trunk/reactos/ntoskrnl/io/irp.c	2005-05-15 13:57:03 UTC (rev 15310)
+++ trunk/reactos/ntoskrnl/io/irp.c	2005-05-15 13:59:57 UTC (rev 15311)
@@ -1282,11 +1282,15 @@
                 /* All lists failed, use the pool */
                 List->L.FreeMisses++;
                 ExFreePool(Irp);
+                Irp = NULL;
             }
         }
         
         /* The free was within dhe Depth */
-        InterlockedPushEntrySList(&List->L.ListHead, (PSINGLE_LIST_ENTRY)Irp);
+        if (Irp)
+        {
+           InterlockedPushEntrySList(&List->L.ListHead, (PSINGLE_LIST_ENTRY)Irp);
+        }
     }
     
     DPRINT("Free done\n");