AT_BASE was once used in purecap as root capability for the interpreter. It was superseded by AT_CHERI_INTERP_*_CAP and no known current software relies on it being a capability. Turn it back to a plain address, consistently with the PCuABI specification (which makes no special provision for AT_BASE, implying that it is a 64-bit value).
Signed-off-by: Kevin Brodsky kevin.brodsky@arm.com --- fs/binfmt_elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 2bf664fcc3c0..cf96d703b333 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -463,7 +463,7 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec, exec->e_phnum * sizeof(struct elf_phdr))); NEW_AUX_ENT(AT_PHENT, sizeof(struct elf_phdr)); NEW_AUX_ENT(AT_PHNUM, exec->e_phnum); - NEW_AUX_ENT(AT_BASE, elf_uaddr_to_user_ptr(interp_load_addr)); + NEW_AUX_ENT(AT_BASE, interp_load_addr); if (bprm->interp_flags & BINPRM_FLAGS_PRESERVE_ARGV0) flags |= AT_FLAGS_PRESERVE_ARGV0; NEW_AUX_ENT(AT_FLAGS, flags);