mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:42:58 +00:00
- Don't leak the dma adapter when we fail
svn path=/trunk/; revision=40554
This commit is contained in:
parent
0f8d58977d
commit
8d8ce081fa
1 changed files with 10 additions and 0 deletions
|
@ -327,6 +327,8 @@ NdisMAllocateMapRegisters(
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Didn't get enough map registers from hal - requested 0x%x, got 0x%x\n",
|
NDIS_DbgPrint(MIN_TRACE, ("Didn't get enough map registers from hal - requested 0x%x, got 0x%x\n",
|
||||||
MapRegistersPerBaseRegister, AvailableMapRegisters));
|
MapRegistersPerBaseRegister, AvailableMapRegisters));
|
||||||
|
|
||||||
|
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||||
|
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||||
return NDIS_STATUS_RESOURCES;
|
return NDIS_STATUS_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,6 +337,8 @@ NdisMAllocateMapRegisters(
|
||||||
if(!Adapter->NdisMiniportBlock.MapRegisters)
|
if(!Adapter->NdisMiniportBlock.MapRegisters)
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("insufficient resources.\n"));
|
NDIS_DbgPrint(MIN_TRACE, ("insufficient resources.\n"));
|
||||||
|
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||||
|
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||||
return NDIS_STATUS_RESOURCES;
|
return NDIS_STATUS_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,6 +363,9 @@ NdisMAllocateMapRegisters(
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("IoAllocateAdapterChannel failed: 0x%x\n", NtStatus));
|
NDIS_DbgPrint(MIN_TRACE, ("IoAllocateAdapterChannel failed: 0x%x\n", NtStatus));
|
||||||
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
||||||
|
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||||
|
Adapter->NdisMiniportBlock.CurrentMapRegister = Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = 0;
|
||||||
|
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||||
return NDIS_STATUS_RESOURCES;
|
return NDIS_STATUS_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,6 +377,9 @@ NdisMAllocateMapRegisters(
|
||||||
{
|
{
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("KeWaitForSingleObject failed: 0x%x\n", NtStatus));
|
NDIS_DbgPrint(MIN_TRACE, ("KeWaitForSingleObject failed: 0x%x\n", NtStatus));
|
||||||
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
|
||||||
|
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
|
||||||
|
Adapter->NdisMiniportBlock.CurrentMapRegister = Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = 0;
|
||||||
|
Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
|
||||||
return NDIS_STATUS_RESOURCES;
|
return NDIS_STATUS_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue