[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 03/10] modules: Don't allocate space for non-allocable section
From: |
Mate Kukri |
Subject: |
[PATCH v4 03/10] modules: Don't allocate space for non-allocable sections. |
Date: |
Wed, 12 Jun 2024 16:57:06 +0100 |
From: Peter Jones <pjones@redhat.com>
Currently when loading grub modules, we allocate space for all sections,
including those without SHF_ALLOC set. We then copy the sections that
/do/ have SHF_ALLOC set into the allocated memory, leaving some of our
allocation untouched forever. Additionally, on platforms with GOT
fixups and trampolines, we currently compute alignment round-ups for the
sections and sections with sh_size = 0.
This patch removes the extra space from the allocation computation, and
makes the allocation computation loop skip empty sections as the loading
loop does.
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-off-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
Signed-off-by: Mate Kukri <mate.kukri@canonical.com>
Reviewed-By: Vladimir Serbinenko
---
grub-core/kern/dl.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
index 0bf40caa6..37db9fab0 100644
--- a/grub-core/kern/dl.c
+++ b/grub-core/kern/dl.c
@@ -237,6 +237,9 @@ grub_dl_load_segments (grub_dl_t mod, const Elf_Ehdr *e)
i < e->e_shnum;
i++, s = (const Elf_Shdr *)((const char *) s + e->e_shentsize))
{
+ if (s->sh_size == 0 || !(s->sh_flags & SHF_ALLOC))
+ continue;
+
tsize = ALIGN_UP (tsize, s->sh_addralign) + s->sh_size;
if (talign < s->sh_addralign)
talign = s->sh_addralign;
--
2.39.2
- [PATCH v4 00/10] UEFI NX support and NX Linux loader using shim loader protocol, Mate Kukri, 2024/06/12
- [PATCH v4 06/10] nx: set page permissions for loaded modules., Mate Kukri, 2024/06/12
- [PATCH v4 02/10] modules: strip .llvm_addrsig sections and similar., Mate Kukri, 2024/06/12
- [PATCH v4 01/10] modules: make .module_license read-only, Mate Kukri, 2024/06/12
- [PATCH v4 03/10] modules: Don't allocate space for non-allocable sections.,
Mate Kukri <=
- [PATCH v4 05/10] nx: add memory attribute get/set API, Mate Kukri, 2024/06/12
- [PATCH v4 10/10] efi: Disallow fallback to legacy Linux loader when shim says NX is required., Mate Kukri, 2024/06/12
- [PATCH v4 04/10] modules: load module sections at page-aligned addresses, Mate Kukri, 2024/06/12
- [PATCH v4 07/10] nx: set the nx compatible flag in EFI grub images, Mate Kukri, 2024/06/12
- [PATCH v4 08/10] efi: Provide wrappers for load_image, start_image, unload_image, Mate Kukri, 2024/06/12
- [PATCH v4 09/10] efi: Use shim's loader protocol for EFI image verification and loading, Mate Kukri, 2024/06/12