Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: 8594/1: enable binfmt_flat on systems with an MMU

Now that the generic changes are in place, this can be enabled on ARM
with the use of proper user space accessors in the flat_get_addr_from_rp()
and flat_put_addr_at_rp() handlers as rp actually holds a user space
address.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Nicolas Pitre and committed by
Russell King
d782e426 55604b7a

+4 -3
+3 -2
arch/arm/include/asm/flat.h
··· 8 8 #define flat_argvp_envp_on_stack() 1 9 9 #define flat_old_ram_flag(flags) (flags) 10 10 #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) 11 - #define flat_get_addr_from_rp(rp, relval, flags, persistent) ((void)persistent,get_unaligned(rp)) 12 - #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) 11 + #define flat_get_addr_from_rp(rp, relval, flags, persistent) \ 12 + ({ unsigned long __val; __get_user_unaligned(__val, rp); __val; }) 13 + #define flat_put_addr_at_rp(rp, val, relval) __put_user_unaligned(val, rp) 13 14 #define flat_get_relocate_addr(rel) (rel) 14 15 #define flat_set_persistent(relval, p) 0 15 16
+1 -1
fs/Kconfig.binfmt
··· 89 89 90 90 config BINFMT_FLAT 91 91 bool "Kernel support for flat binaries" 92 - depends on !MMU || M68K 92 + depends on !MMU || ARM || M68K 93 93 depends on !FRV || BROKEN 94 94 help 95 95 Support uClinux FLAT format binaries.