u-boot/lib/efi_loader
Alexander Graf 5c38e05ed8 efi_loader: Make RTS relocation more robust
While changing the RTS alignment to 64KB in commit 7a82c3051c
("efi_loader: Align runtime section to 64kb") the relocation code
started to break.

The reason for that is that we didn't actually look at the real
relocation data. We merely took the RUNTIME_CODE section as a
hint and started to relocate based on self calculated data from
that point on. That calculation was now out of sync though.

To ensure we're not running into such a situation again, this patch
makes the runtime relocation code a bit more robust. We can just
trust the phys/virt hints from the payload. We also should check that
we really only have a single section, as the code doesn't handle
multiple code relocations yet.

Fixes: 7a82c3051c ("efi_loader: Align runtime section to 64kb")
Reported-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reported-by: Loic Devulder <ldevulder@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Tested-by: Loic Devulder <ldevulder@suse.de>
Tested-by: Jonathan Gray <jsg@jsg.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
2018-12-23 04:02:20 +01:00
..
.gitignore lib: gitignore *.elf and *.so generated by efi_loader 2017-01-09 10:30:24 -05:00
efi_acpi.c efi_loader: Install ACPI configuration tables 2018-07-02 09:23:28 +08:00
efi_bootmgr.c efi_loader: bootmgr: add load option helper functions 2018-12-03 00:17:45 +01:00
efi_boottime.c Revert "efi_loader: remove efi_exit_caches()" 2018-12-02 21:59:37 +01:00
efi_console.c efi_loader: fix typos 2018-12-02 21:59:37 +01:00
efi_device_path.c efi_loader: allow device == NULL in efi_dp_from_name() 2018-12-03 00:13:15 +01:00
efi_device_path_to_text.c efi_loader: fix typos 2018-12-02 21:59:37 +01:00
efi_device_path_utilities.c SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
efi_disk.c efi_loader: rename parent to header 2018-12-02 21:59:36 +01:00
efi_file.c efi_loader: use u16* for UTF16 strings 2018-12-02 21:59:37 +01:00
efi_gop.c efi_loader: fix typos 2018-12-02 21:59:37 +01:00
efi_image_loader.c efi_loader: refactor efi_setup_loaded_image() 2018-09-23 21:55:31 +02:00
efi_memory.c efi_loader: Align runtime section to 64kb 2018-12-02 21:59:37 +01:00
efi_net.c efi_loader: fix simple network protocol 2018-12-02 21:59:37 +01:00
efi_root_node.c efi_loader: create root node 2018-09-23 21:55:31 +02:00
efi_runtime.c efi_loader: Make RTS relocation more robust 2018-12-23 04:02:20 +01:00
efi_smbios.c sandbox: smbios: Update to support sandbox 2018-12-02 21:59:37 +01:00
efi_unicode_collation.c efi_loader: EFI_UNICODE_COLLATION_PROTOCOL 2018-09-23 21:55:29 +02:00
efi_variable.c efi_loader: memory leak in efi_set_variable() 2018-10-16 16:40:11 +02:00
efi_watchdog.c SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
helloworld.c efi_selftest: use CR LF in helloworld 2018-12-02 21:59:36 +01:00
Kconfig efi: sandbox: Enable EFI loader build for sandbox 2018-09-23 21:55:30 +02:00
Makefile efi_loader: create root node 2018-09-23 21:55:31 +02:00