summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2016-07-24 11:30:28 -0400
committerGreg Ungerer <gerg@linux-m68k.org>2016-07-28 13:29:13 +1000
commit002d2f01f13f1671d771e1493a3405ed4986694d (patch)
treec20e560cea52a5fdfde6be507b8a519bef83df74
parent472f95f32d5aa07eda96a6b2578b85d7b27c5110 (diff)
downloadlinux-002d2f01f13f1671d771e1493a3405ed4986694d.tar.gz
linux-002d2f01f13f1671d771e1493a3405ed4986694d.tar.bz2
linux-002d2f01f13f1671d771e1493a3405ed4986694d.zip
m68k: enable binfmt_flat on systems with an MMU
Now that the generic changes are in place, this can be enabled on m68k 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: Greg Ungerer <gerg@linux-m68k.org>
-rw-r--r--arch/m68k/include/asm/flat.h5
-rw-r--r--fs/Kconfig.binfmt3
2 files changed, 5 insertions, 3 deletions
diff --git a/arch/m68k/include/asm/flat.h b/arch/m68k/include/asm/flat.h
index 8e58d47be90d..00c392b0cabd 100644
--- a/arch/m68k/include/asm/flat.h
+++ b/arch/m68k/include/asm/flat.h
@@ -8,8 +8,9 @@
#define flat_argvp_envp_on_stack() 1
#define flat_old_ram_flag(flags) (flags)
#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
-#define flat_get_addr_from_rp(rp, relval, flags, p) get_unaligned(rp)
-#define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp)
+#define flat_get_addr_from_rp(rp, relval, flags, p) \
+ ({ unsigned long __val; __get_user_unaligned(__val, rp); __val; })
+#define flat_put_addr_at_rp(rp, val, relval) __put_user_unaligned(val, rp)
#define flat_get_relocate_addr(rel) (rel)
static inline int flat_set_persistent(unsigned long relval,
diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt
index 72c03354c14b..c7efddf6e038 100644
--- a/fs/Kconfig.binfmt
+++ b/fs/Kconfig.binfmt
@@ -89,7 +89,8 @@ config BINFMT_SCRIPT
config BINFMT_FLAT
bool "Kernel support for flat binaries"
- depends on !MMU && (!FRV || BROKEN)
+ depends on !MMU || M68K
+ depends on !FRV || BROKEN
help
Support uClinux FLAT format binaries.