Subject: Re: [PULL REQUEST v2] FDPIC ELF support for ARM

From: Russell King - ARM Linux admin <[email-masked]>
Date: Mon, 8 Jun 2020 23:47:25 +0100

Nico,

Al Viro has identified this in include/uapi/linux/elfcore.h:

        elf_gregset_t pr_reg;   /* GP registers */
#ifdef CONFIG_BINFMT_ELF_FDPIC
        /* When using FDPIC, the loadmap addresses need to be communicated
         * to GDB in order for GDB to do the necessary relocations.  The
         * fields (below) used to communicate this information are placed
         * immediately after ``pr_reg'', so that the loadmap addresses may
         * be viewed as part of the register set if so desired.
         */
        unsigned long pr_exec_fdpic_loadmap;
        unsigned long pr_interp_fdpic_loadmap;
#endif
        int pr_fpvalid;         /* True if math co-processor being used.  */

which means if CONFIG_BINFMT_ELF_FDPIC is enabled for a target that
also uses ELF, then the ELF coredump format breaks.  David Howells
says this evening:

23:42 < dhowells> you weren't meant to use ELF and ELF_FDPIC both

So, we now have a problem; your code has done something that was never
intended to be permitted, and there are configurations where the kernel
breaks the user API.  This only affects ARM as this is the only arch
that was silly enough to allow ELF and ELF_FDPIC.

Please address.

Thanks.

On Tue, Aug 29, 2017 at 11:16:13PM -0400, Nicolas Pitre wrote:
> Russell, could you please pull the following:
> 
>   http://git.linaro.org/people/nicolas.pitre/linux fdpic
> 
> This series provides the needed changes to suport the ELF_FDPIC binary
> format on ARM. Both MMU and non-MMU systems are supported. This format
> has many advantages over the BFLT format used on MMU-less systems, such
> as being real ELF that can be parsed by standard tools, can support
> shared dynamic libs, etc.
> 
> This is based on v4.13-rc4 not to conflict with changes to signal.c
> that happened in v4.13-rc3.
> 
> A complete toolchain and prebuilt packages can be obtained here:
> 
> https://github.com/mickael-guene/fdpic_manifest
> 
> Changes from v1:
> 
> - Reworked the signal return code to be compatible with a non-executable
>   stack.
> - Rebased on v4.13-rc4 to pick up latest signal changes.
> - Added MMU support.
> - Fixed crash in the ELF-FDPIC loader when loading an executable with
>   shared libs on a system with an MMU.
> - Made the regular ELF loader reject FDPIC binaries.
> - Added ACKs and Reviewed-bys.
> 
> diffstat:
> 
>  arch/arm/include/asm/elf.h         | 16 +++++++--
>  arch/arm/include/asm/mmu.h         |  8 +++++
>  arch/arm/include/asm/processor.h   | 22 +++++++++----
>  arch/arm/include/asm/ucontext.h    |  1 +
>  arch/arm/include/uapi/asm/ptrace.h |  4 +++
>  arch/arm/include/uapi/asm/unistd.h |  1 +
>  arch/arm/kernel/asm-offsets.c      |  4 +++
>  arch/arm/kernel/elf.c              | 24 +++++++++++++-
>  arch/arm/kernel/signal.c           | 53 +++++++++++++++++++++---------
>  arch/arm/kernel/signal.h           | 11 +++++++
>  arch/arm/kernel/sigreturn_codes.S  | 56 +++++++++++++++++++++++++++++---
>  arch/arm/kernel/traps.c            |  3 ++
>  fs/Kconfig.binfmt                  |  4 +--
>  fs/binfmt_elf.c                    | 15 +++++++--
>  fs/binfmt_elf_fdpic.c              | 13 ++++++--
>  15 files changed, 199 insertions(+), 36 deletions(-)

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC for 0.8m (est. 1762m) line in suburbia: sync at 13.1Mbps down 503kbps up

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel