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");