aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-07-15 14:58:32 +0000
committerMark Johnston <markj@FreeBSD.org>2026-08-06 12:52:28 +0000
commit984a3970b16fd603bba7554b4a4c7449550bd5cb (patch)
tree1515fa48d4f4c70f21c353dbb30845bfd87ac5a7
parent7eb4c67be503176d4824d8eaccd70ae942569e54 (diff)
stand: Recognize SHT_INIT_ARRAY sections as constructor sections
Pass such a section to the kernel using modinfo, otherwise link_elf.c won't execute constructors for the file. This is required for KASAN, otherwise redzones for global buffers are not poisoned during boot. Reviewed by: kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D58244 (cherry picked from commit 4b0ae7e001a97e5449835bb8a2e6c2e6f53aac39)
-rw-r--r--stand/common/load_elf.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/stand/common/load_elf.c b/stand/common/load_elf.c
index b9f55a21e403..1b5f1daded09 100644
--- a/stand/common/load_elf.c
+++ b/stand/common/load_elf.c
@@ -725,7 +725,8 @@ __elfN(loadimage)(struct preloaded_file *fp, elf_file_t ef, uint64_t off)
if (shstr) {
for (i = 0; i < ehdr->e_shnum; i++) {
if (strcmp(shstr + shdr[i].sh_name,
- ".ctors") != 0)
+ ".ctors") != 0 &&
+ shdr[i].sh_type != SHT_INIT_ARRAY)
continue;
ctors = shdr[i].sh_addr;
file_addmetadata(fp, MODINFOMD_CTORS_ADDR,