mirror of https://github.com/acidanthera/audk.git
EmbeddedPkg: Improve LocateAndInstallAcpiFromFvConditional
LocateAndInstallAcpiFromFvConditional was always returning EFI_SUCCESS even when it failed to find `AcpiFile`. Fix that, and improve the layout by checking if an error occurred and breaking earlier. Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
This commit is contained in:
parent
5aa6842715
commit
a1b0703e8e
|
@ -52,6 +52,9 @@ LocateAndInstallAcpiFromFvConditional (
|
|||
UINTN AcpiTableSize;
|
||||
UINTN AcpiTableKey;
|
||||
BOOLEAN Valid;
|
||||
BOOLEAN FoundAcpiFile;
|
||||
|
||||
FoundAcpiFile = FALSE;
|
||||
|
||||
// Ensure the ACPI Table is present
|
||||
Status = gBS->LocateProtocol (
|
||||
|
@ -107,7 +110,13 @@ LocateAndInstallAcpiFromFvConditional (
|
|||
&SectionSize,
|
||||
&FvStatus
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
break;
|
||||
}
|
||||
|
||||
FoundAcpiFile = TRUE;
|
||||
|
||||
AcpiTableKey = 0;
|
||||
AcpiTableSize = ((EFI_ACPI_DESCRIPTION_HEADER *)AcpiTable)->Length;
|
||||
ASSERT (SectionSize >= AcpiTableSize);
|
||||
|
@ -122,7 +131,7 @@ LocateAndInstallAcpiFromFvConditional (
|
|||
));
|
||||
|
||||
// Is the ACPI table valid?
|
||||
if (CheckAcpiTableFunction) {
|
||||
if (CheckAcpiTableFunction != NULL) {
|
||||
Valid = CheckAcpiTableFunction ((EFI_ACPI_DESCRIPTION_HEADER *)AcpiTable);
|
||||
} else {
|
||||
Valid = TRUE;
|
||||
|
@ -141,15 +150,10 @@ LocateAndInstallAcpiFromFvConditional (
|
|||
// Free memory allocated by ReadSection
|
||||
gBS->FreePool (AcpiTable);
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Increment the section instance
|
||||
SectionInstance++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FREE_HANDLE_BUFFER:
|
||||
//
|
||||
|
@ -157,7 +161,7 @@ FREE_HANDLE_BUFFER:
|
|||
//
|
||||
gBS->FreePool (HandleBuffer);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
return (FoundAcpiFile ? EFI_SUCCESS : EFI_NOT_FOUND);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue