Index: sdk/lib/drivers/ip/network/receive.c =================================================================== --- sdk/lib/drivers/ip/network/receive.c (revision 72410) +++ sdk/lib/drivers/ip/network/receive.c (working copy) @@ -489,7 +489,7 @@ */ { KIRQL OldIrql; - PLIST_ENTRY CurrentEntry; + PLIST_ENTRY CurrentEntry, NextEntry; PIPDATAGRAM_REASSEMBLY Current; TcpipAcquireSpinLock(&ReassemblyListLock, &OldIrql); @@ -496,7 +496,9 @@ CurrentEntry = ReassemblyListHead.Flink; while (CurrentEntry != &ReassemblyListHead) { - Current = CONTAINING_RECORD(CurrentEntry, IPDATAGRAM_REASSEMBLY, ListEntry); + NextEntry = CurrentEntry->Flink; + Current = CONTAINING_RECORD(CurrentEntry, IPDATAGRAM_REASSEMBLY, ListEntry); + /* Unlink it from the list */ RemoveEntryList(CurrentEntry); @@ -503,7 +505,7 @@ /* And free the descriptor */ FreeIPDR(Current); - CurrentEntry = CurrentEntry->Flink; + CurrentEntry = NextEntry; } TcpipReleaseSpinLock(&ReassemblyListLock, OldIrql);