[U-Boot] [PATCH v2 0/3] efi_loader: device path: handle a long file path name

AKASHI Takahiro takahiro.akashi at linaro.org
Wed Oct 9 07:19:51 UTC 2019


efi_dp_from_name() uses a fixed length (32) of buffer, and so it cannot
handle a long file path name. This patch set lifts the upper limit
as well as other limitations regarding file paths.

For example, without this patch set,
=> efi boot add 1 TEST scsi 1:1 /0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef/Shell.efi ""
=> efi boot dump
Boot0001:
  attributes: A-- (0x00000001)
  label: TEST
  file_path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Scsi(1,0)/HD(1,MBR,0x086246ba,0x800,0x40000)/\0123456789abcdef0123456789abcd
  data:
    00000000: 00 00

	=> The path was truncated


With this patch set applied,
=> efi boot add 1 TEST scsi 1:1 /0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef/0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef/Shell.efi ""
=> efi boot dump
Boot0001:
  attributes: A-- (0x00000001)
  label: TEST
  file_path: /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Scsi(1,0)/HD(1,MBR,0x086246ba,0x800,0x40000)/\0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789  data:
    00000000: 00 00

	=> still truncated, but it was due to limitation of command
	   line processing (CONFIG_SYS_CBSIZE?), not due to device path


Changes in v2 (Oct 9, 2019)
* add patch#1 after Heinrich's comment
* add patch#2 after Heinrich's comment

AKASHI Takahiro (3):
  efi_loader: device_path: check against file path length
  efi_loader: device_path: lift the upper limit in dp-to-text conversion
  efi_loader: device_path: allow for arbitrary length of file path

 lib/efi_loader/efi_device_path.c         | 23 ++++--
 lib/efi_loader/efi_device_path_to_text.c | 90 +++++++++++++++++++++---
 2 files changed, 96 insertions(+), 17 deletions(-)

-- 
2.21.0



More information about the U-Boot mailing list