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