- We must call MiniDequeueWorkItem while holding a spin lock
authorCameron Gutman <aicommander@gmail.com>
Fri, 12 Sep 2008 03:06:31 +0000 (03:06 +0000)
committerCameron Gutman <aicommander@gmail.com>
Fri, 12 Sep 2008 03:06:31 +0000 (03:06 +0000)
svn path=/branches/aicom-network-fixes/; revision=36150

drivers/network/ndis/ndis/miniport.c

index 20ce1ac..cdb0a88 100644 (file)
@@ -767,9 +767,12 @@ VOID NTAPI MiniportDpc(
   PVOID WorkItemContext;
   NDIS_WORK_ITEM_TYPE WorkItemType;
   PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext);
+  KIRQL OldIrql;
 
   NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
 
+  KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
+
   NdisStatus =
       MiniDequeueWorkItem
       (Adapter, &WorkItemType, &WorkItemContext);
@@ -866,6 +869,8 @@ VOID NTAPI MiniportDpc(
             break;
         }
     }
+
+   KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
 }
 
 \f