mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
efi_loader: multi part device paths to text
Our current implementation of EFI_DEVICE_PATH_TO_TEXT_PROTOCOL.ConvertDevicePathToText() truncates multi part device paths after the first part. We should convert all parts. Render device path instance ends as commas. This is not explicitly described in the UEFI spec but mimics what EDK II does. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
1edfc3fa9b
commit
bd3d75bb0c
1 changed files with 12 additions and 5 deletions
|
@ -369,11 +369,18 @@ static uint16_t EFIAPI *efi_convert_device_path_to_text(
|
|||
|
||||
if (!device_path)
|
||||
goto out;
|
||||
while (device_path &&
|
||||
str + MAX_NODE_LEN < buffer + MAX_PATH_LEN) {
|
||||
*str++ = '/';
|
||||
str = efi_convert_single_device_node_to_text(str, device_path);
|
||||
device_path = efi_dp_next(device_path);
|
||||
while (device_path && str + MAX_NODE_LEN < buffer + MAX_PATH_LEN) {
|
||||
if (device_path->type == DEVICE_PATH_TYPE_END) {
|
||||
if (device_path->sub_type !=
|
||||
DEVICE_PATH_SUB_TYPE_INSTANCE_END)
|
||||
break;
|
||||
*str++ = ',';
|
||||
} else {
|
||||
*str++ = '/';
|
||||
str = efi_convert_single_device_node_to_text(
|
||||
str, device_path);
|
||||
}
|
||||
*(u8 **)&device_path += device_path->length;
|
||||
}
|
||||
|
||||
text = efi_str_to_u16(buffer);
|
||||
|
|
Loading…
Reference in a new issue