Skip to content

Commit

Permalink
FROMLIST: BACKPORT: [PATCH 2/6] arm64: elf: Set AT_SYSINFO_EHDR in co…
Browse files Browse the repository at this point in the history
…mpat processes

(cherry pick from url https://patchwork.kernel.org/patch/10060431/)

If the compat vDSO is enabled, we need to set AT_SYSINFO_EHDR in the
auxiliary vector of compat processes to the address of the vDSO code
page, so that the dynamic linker can find it (just like the regular vDSO).

Note that we cast context.vdso to Elf64_Off, instead of elf_addr_t,
because elf_addr_t is Elf32_Off in compat_binfmt_elf.c, and casting
context.vdso to u32 would trigger a pointer narrowing warning.

Signed-off-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Dave Martin <Dave.Martin@arm.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Bug: 63737556
Bug: 20045882
Orig-Change-Id: I5d0b191d3b2f4c0b2ec31fe9faef0246253635ce
Change-Id: I263cec90507c7193c114237d78a34dc5eef3c3b0
Signed-off-by: khusika <khusikadhamar@gmail.com>
  • Loading branch information
kevin-brodsky-arm authored and khusika committed Oct 13, 2018
1 parent 49424b1 commit b56bc83
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions arch/arm64/include/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,11 +137,12 @@ typedef struct user_fpsimd_state elf_fpregset_t;

#define SET_PERSONALITY(ex) clear_thread_flag(TIF_32BIT);

#define ARCH_DLINFO \
#define _SET_AUX_ENT_VDSO \
do { \
NEW_AUX_ENT(AT_SYSINFO_EHDR, \
(elf_addr_t)current->mm->context.vdso); \
(Elf64_Off)current->mm->context.vdso); \
} while (0)
#define ARCH_DLINFO _SET_AUX_ENT_VDSO

#define ARCH_HAS_SETUP_ADDITIONAL_PAGES
struct linux_binprm;
Expand Down Expand Up @@ -187,7 +188,11 @@ do { \
set_thread_flag(TIF_32BIT); \
} while (0)

#ifdef CONFIG_VDSO32
#define COMPAT_ARCH_DLINFO _SET_AUX_ENT_VDSO
#else
#define COMPAT_ARCH_DLINFO
#endif
extern int aarch32_setup_vectors_page(struct linux_binprm *bprm,
int uses_interp);
#define compat_arch_setup_additional_pages \
Expand Down

0 comments on commit b56bc83

Please sign in to comment.