Index: drivers/network/ndis/ndis/memory.c =================================================================== --- drivers/network/ndis/ndis/memory.c (revision 40713) +++ drivers/network/ndis/ndis/memory.c (working copy) @@ -241,8 +241,15 @@ Memory->VirtualAddress = VirtualAddress; Memory->Cached = Cached; - PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, NdisMFreeSharedMemoryPassive, Memory); - ZwClose(ThreadHandle); + if (KeGetCurrentIrql()==PASSIVE_LEVEL) + { + NdisMFreeSharedMemoryPassive(Memory); + } + else + { + PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, NdisMFreeSharedMemoryPassive, Memory); + ZwClose(ThreadHandle); + } } VOID @@ -309,8 +316,15 @@ Memory->Adapter = &Adapter->NdisMiniportBlock; Memory->Context = Context; - PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, NdisMAllocateSharedMemoryPassive, Memory); - ZwClose(ThreadHandle); + if (KeGetCurrentIrql()==PASSIVE_LEVEL) + { + NdisMAllocateSharedMemoryPassive(Memory); + } + else + { + PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, NdisMAllocateSharedMemoryPassive, Memory); + ZwClose(ThreadHandle); + } return NDIS_STATUS_PENDING; }