diff --git a/reactos/drivers/bus/acpi/buspdo.c b/reactos/drivers/bus/acpi/buspdo.c index 25fbe324f4f..e7cc65b0c19 100644 --- a/reactos/drivers/bus/acpi/buspdo.c +++ b/reactos/drivers/bus/acpi/buspdo.c @@ -598,24 +598,24 @@ Bus_PDO_QueryResources( /* Get current resources */ Buffer.Length = 0; + AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); + if ((!ACPI_SUCCESS(AcpiStatus) && AcpiStatus != AE_BUFFER_OVERFLOW) || + Buffer.Length == 0) + { + return Irp->IoStatus.Status; + } + + Buffer.Pointer = ExAllocatePool(PagedPool, Buffer.Length); + if (!Buffer.Pointer) + return STATUS_INSUFFICIENT_RESOURCES; + AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); if (!ACPI_SUCCESS(AcpiStatus)) { - return STATUS_SUCCESS; + DPRINT1("AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus); + ASSERT(FALSE); + return STATUS_UNSUCCESSFUL; } - if (Buffer.Length > 0) - { - Buffer.Pointer = ExAllocatePool(PagedPool, Buffer.Length); - if (!Buffer.Pointer) - { - ASSERT(FALSE); - } - AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); - if (!ACPI_SUCCESS(AcpiStatus)) - { - ASSERT(FALSE); - } - } resource= Buffer.Pointer; /* Count number of resources */ @@ -775,24 +775,24 @@ Bus_PDO_QueryResourceRequirements( /* Get current resources */ Buffer.Length = 0; + AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); + if ((!ACPI_SUCCESS(AcpiStatus) && AcpiStatus != AE_BUFFER_OVERFLOW) || + Buffer.Length == 0) + { + return Irp->IoStatus.Status; + } + + Buffer.Pointer = ExAllocatePool(PagedPool, Buffer.Length); + if (!Buffer.Pointer) + return STATUS_INSUFFICIENT_RESOURCES; + AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); if (!ACPI_SUCCESS(AcpiStatus)) { - return STATUS_SUCCESS; + DPRINT1("AcpiGetCurrentResources #2 failed (0x%x)\n", AcpiStatus); + ASSERT(FALSE); + return STATUS_UNSUCCESSFUL; } - if (Buffer.Length > 0) - { - Buffer.Pointer = ExAllocatePool(PagedPool, Buffer.Length); - if (!Buffer.Pointer) - { - ASSERT(FALSE); - } - AcpiStatus = AcpiGetCurrentResources(DeviceData->AcpiHandle, &Buffer); - if (!ACPI_SUCCESS(AcpiStatus)) - { - ASSERT(FALSE); - } - } resource= Buffer.Pointer; /* Count number of resources */