From b7213bbd59833fb0786c83a28df5f8244602ab5e Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 21 Sep 2022 07:30:45 +0200 Subject: OvmfPkg/QemuBootOrderLib: skip unsupported entries in StoreQemuBootOrder When finding an unsupported entry just skip over and continue with the next entry instead of stop processing altogether. Signed-off-by: Gerd Hoffmann Reviewed-by: Ard Biesheuvel --- .../Library/QemuBootOrderLib/QemuBootOrderLib.c | 56 ++++++++++++---------- 1 file changed, 30 insertions(+), 26 deletions(-) (limited to 'OvmfPkg') diff --git a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c index 374c6d8f5e..18646daa67 100644 --- a/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c +++ b/OvmfPkg/Library/QemuBootOrderLib/QemuBootOrderLib.c @@ -1775,34 +1775,38 @@ StoreQemuBootOrder ( Translated, &TranslatedSize ); - while (!RETURN_ERROR (Status)) { - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + while (Status == EFI_SUCCESS || + Status == EFI_UNSUPPORTED) + { + if (Status == EFI_SUCCESS) { + EFI_DEVICE_PATH_PROTOCOL *DevicePath; - // - // Convert the UEFI devpath prefix to binary representation. - // - ASSERT (Translated[TranslatedSize] == L'\0'); - DevicePath = ConvertTextToDevicePath (Translated); - if (DevicePath == NULL) { - Status = RETURN_OUT_OF_RESOURCES; - goto FreeExtraPciRoots; - } + // + // Convert the UEFI devpath prefix to binary representation. + // + ASSERT (Translated[TranslatedSize] == L'\0'); + DevicePath = ConvertTextToDevicePath (Translated); + if (DevicePath == NULL) { + Status = RETURN_OUT_OF_RESOURCES; + goto FreeExtraPciRoots; + } - UnicodeSPrint ( - VariableName, - sizeof (VariableName), - L"QemuBootOrder%04d", - VariableIndex++ - ); - DEBUG ((DEBUG_INFO, "%a: %s = %s\n", __FUNCTION__, VariableName, Translated)); - gRT->SetVariable ( - VariableName, - &gQemuBootOrderGuid, - EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, - GetDevicePathSize (DevicePath), - DevicePath - ); - FreePool (DevicePath); + UnicodeSPrint ( + VariableName, + sizeof (VariableName), + L"QemuBootOrder%04d", + VariableIndex++ + ); + DEBUG ((DEBUG_INFO, "%a: %s = %s\n", __FUNCTION__, VariableName, Translated)); + gRT->SetVariable ( + VariableName, + &gQemuBootOrderGuid, + EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS, + GetDevicePathSize (DevicePath), + DevicePath + ); + FreePool (DevicePath); + } // // Move to the next OFW devpath. -- cgit v1.2.3