The FDPIC loader is not storing aux vector info in mm->saved_aux so the aux vectors were not being exposed through /proc/<pid>/auxv. This patch copies the aux vectors stored on the user stack into mm->saved_aux so that they may be available through procfs. Signed-off-by: Mark Salter <msalter@xxxxxxxxxx> --- fs/binfmt_elf_fdpic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index af4c9a4..9651918 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c @@ -478,7 +478,7 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm, struct elf_fdpic_params *interp_params) { const struct cred *cred = current_cred(); - unsigned long sp, csp, nitems; + unsigned long sp, csp, nitems, auxv_end; elf_caddr_t __user *argv, *envp; size_t platform_len = 0, len; char *k_platform, *k_base_platform; @@ -594,6 +594,7 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm, } while (0) nr = 0; + auxv_end = csp; csp -= 2 * sizeof(unsigned long); NEW_AUX_ENT(AT_NULL, 0); if (k_platform) { @@ -645,6 +646,10 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm, #endif #undef NEW_AUX_ENT + if (copy_from_user(current->mm->saved_auxv, + (const char __user *) csp, auxv_end - csp)) + return -EFAULT; + /* allocate room for argv[] and envv[] */ csp -= (bprm->envc + 1) * sizeof(elf_caddr_t); envp = (elf_caddr_t __user *) csp; -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html