u-boot/lib/efi_loader
Paul Barbieri 7a85f32413 EFI: Fix ReadBlocks API reading incorrect sector for UCLASS_PARTITION devices
The requsted partition disk sector incorrectly has the parition start
sector added in twice for UCLASS_PARTITION devices. The efi_disk_rw_blocks()
routine adds the diskobj->offset to the requested lba. When the device
is a UCLASS_PARTITION, the dev_read() or dev_write() routine is called
which adds part-gpt_part_info.start. This causes I/O to the wrong sector.

Takahiro Akashi suggested removing the offset field from the efi_disk_obj
structure since disk-uclass.c handles the partition start biasing. Device
types other than UCLASS_PARTITION set the diskobj->offset field to zero
which makes the field unnecessary. This change removes the offset field
from the structure and removes all references from the code which is
isolated to the lib/efi_loader/efi_disk.c module.

This change also adds a test for the EFI ReadBlocks() API in the EFI
selftest code. There is already a test for reading a FAT file. The new
test uses ReadBlocks() to read the same "disk" block and compare it to
the data read from the file system API.

Signed-Off-by: Paul Barbieri <plb365@gmail.com>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2022-07-02 14:19:12 +02:00
..
.gitignore efi_loader: git ignore helloworld_efi.S 2020-01-07 18:08:20 +01:00
dtbdump.c efi_loader: move dtbdump.c, initrddump.c to lib/efi_loader 2022-03-20 17:01:00 +01:00
efi_acpi.c efi: Correct address handling with ACPI tables 2022-01-25 11:44:36 -07:00
efi_bootmgr.c efi_loader: create boot options without file path 2022-06-12 13:02:34 +02:00
efi_boottime.c efi_loader: export efi_locate_device_handle() 2022-05-03 21:39:22 +02:00
efi_capsule.c EFI: Do not consider OsIndications variable if CONFIG_EFI_IGNORE_OSINDICATIONS is enabled 2022-06-12 09:17:54 +02:00
efi_console.c efi_loader: initialize console size late 2022-06-19 15:53:09 +02:00
efi_device_path.c efi_loader: create boot options without file path 2022-06-12 13:02:34 +02:00
efi_device_path_to_text.c efi_loader: fix text output for Uart() DP nodes 2022-02-05 20:20:01 +01:00
efi_device_path_utilities.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_disk.c EFI: Fix ReadBlocks API reading incorrect sector for UCLASS_PARTITION devices 2022-07-02 14:19:12 +02:00
efi_dt_fixup.c efi_loader: Get rid of kaslr-seed if EFI_RNG_PROTOCOL is installed 2022-01-15 10:57:22 +01:00
efi_esrt.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_file.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_firmware.c EFI: FMP: Use a common GetImageInfo function for FIT and raw images 2022-06-12 09:17:54 +02:00
efi_freestanding.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_gop.c efi_loader: correct function comment style 2022-01-29 10:23:40 +01:00
efi_helper.c efi_loader: add sha384/512 on certificate revocation 2022-05-07 23:17:26 +02:00
efi_hii.c efi_loader: EFI_HII_STRING_PROTOCOL.GetString() 2022-04-15 11:26:21 +02:00
efi_hii_config.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_image_loader.c efi_loader: copy GUID in InstallProtocolInterface() 2022-03-12 12:27:07 +01:00
efi_load_initrd.c efi_loader: avoid multiple local copies of lf2_initrd_guid 2021-10-21 03:46:04 +02:00
efi_load_options.c efi_loader: simplify efi_serialize_load_option() 2022-04-15 11:26:21 +02:00
efi_memory.c efi_loader: simplify efi_add_conventional_memory_map() 2022-04-29 14:25:39 +02:00
efi_net.c efi_loader: fix use after free in receive path 2020-10-19 22:59:53 +02:00
efi_riscv.c efi_loader: Enable RISCV_EFI_BOOT_PROTOCOL support 2022-01-29 10:23:40 +01:00
efi_rng.c efi_loader: use %pUs for printing GUIDs 2022-01-19 16:16:33 +01:00
efi_root_node.c efi_loader: remove EFI_UNICODE_COLLATION_PROTOCOL 2021-01-20 08:17:17 +01:00
efi_runtime.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
efi_setup.c efi_loader: initialize console size late 2022-06-19 15:53:09 +02:00
efi_signature.c efi_loader: add sha384/512 on certificate revocation 2022-05-07 23:17:26 +02:00
efi_smbios.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
efi_string.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_tcg2.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_unicode_collation.c efi_loader: carve out utf_to_cp() 2021-03-07 17:37:13 +01:00
efi_var_common.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_var_file.c efi_loader: don't load Shim's MOK database from file 2021-10-21 03:46:04 +02:00
efi_var_mem.c efi_loader: treat UEFI variable name as const 2021-10-25 21:13:06 +02:00
efi_var_seed.S efi_loader: pre-seed UEFI variables 2020-07-16 12:37:02 +02:00
efi_variable.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
efi_variable_tee.c efi_loader: Set variable attributes when EFI_BUFFER_TOO_SMALL is returned 2022-03-20 11:03:06 +01:00
efi_watchdog.c efi_loader: update the timing of enabling and disabling EFI watchdog 2022-02-26 07:37:01 +01:00
helloworld.c efi: Use 16-bit unicode strings 2022-02-03 12:16:01 -05:00
initrddump.c efi_loader: initrddump: drain input before prompt 2022-03-26 07:46:21 +01:00
Kconfig efi_loader: Select EVENT as well 2022-05-07 23:17:26 +02:00
Makefile efi_loader: disk: compile efi_disk when CONFIG_BLK 2022-04-23 22:05:34 +02:00