Author: cgutman
Date: Sat Apr 11 00:04:08 2009
New Revision: 40447

URL: http://svn.reactos.org/svn/reactos?rev=40447&view=rev
Log:
 - MiniSendComplete acquires the adapter lock so release the lock before 
calling it

Modified:
    trunk/reactos/drivers/network/ndis/ndis/protocol.c

Modified: trunk/reactos/drivers/network/ndis/ndis/protocol.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/protocol.c?rev=40447&r1=40446&r2=40447&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Sat Apr 11 
00:04:08 2009
@@ -349,15 +349,15 @@
        else
        {
          /* Send is called at DISPATCH_LEVEL for all serialized miniports */
-         KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql);
          for (i = 0; i < NumberOfPackets; i++)
          {
+            KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql);
             NdisStatus = 
(*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
                            Adapter->NdisMiniportBlock.MiniportAdapterContext, 
PacketArray[i], PacketArray[i]->Private.Flags);
+            KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql);
             if (NdisStatus != NDIS_STATUS_PENDING)
                 MiniSendComplete(Adapter, PacketArray[i], NdisStatus);
          }
-         KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql);
        }
      }
 }

Reply via email to