mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 12:23:31 +00:00
- Don't leak the dma adapter when we fail
svn path=/trunk/; revision=40554
This commit is contained in:
@@ -327,6 +327,8 @@ NdisMAllocateMapRegisters(
|
||||
NDIS_DbgPrint(MIN_TRACE, ("Didn't get enough map registers from hal - requested 0x%x, got 0x%x\n",
|
||||
MapRegistersPerBaseRegister, AvailableMapRegisters));
|
||||
|
||||
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
}
|
||||
|
||||
@@ -335,6 +337,8 @@ NdisMAllocateMapRegisters(
|
||||
if(!Adapter->NdisMiniportBlock.MapRegisters)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("insufficient resources.\n"));
|
||||
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
}
|
||||
|
||||
@@ -359,6 +363,9 @@ NdisMAllocateMapRegisters(
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("IoAllocateAdapterChannel failed: 0x%x\n", NtStatus));
|
||||
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
||||
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||
Adapter->NdisMiniportBlock.CurrentMapRegister = Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = 0;
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
}
|
||||
|
||||
@@ -370,6 +377,9 @@ NdisMAllocateMapRegisters(
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE, ("KeWaitForSingleObject failed: 0x%x\n", NtStatus));
|
||||
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
||||
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||
Adapter->NdisMiniportBlock.CurrentMapRegister = Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = 0;
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user