Przeglądaj źródła

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>
Nicolas Pitre 9 lat temu
rodzic
commit
d782e426b8
2 zmienionych plików z 4 dodań i 3 usunięć
  1. 3 2
      arch/arm/include/asm/flat.h
  2. 1 1
      fs/Kconfig.binfmt

+ 3 - 2
arch/arm/include/asm/flat.h

@@ -8,8 +8,9 @@
 #define	flat_argvp_envp_on_stack()		1
 #define	flat_argvp_envp_on_stack()		1
 #define	flat_old_ram_flag(flags)		(flags)
 #define	flat_old_ram_flag(flags)		(flags)
 #define	flat_reloc_valid(reloc, size)		((reloc) <= (size))
 #define	flat_reloc_valid(reloc, size)		((reloc) <= (size))
-#define	flat_get_addr_from_rp(rp, relval, flags, persistent) ((void)persistent,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, persistent) \
+	({ 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)
 #define	flat_get_relocate_addr(rel)		(rel)
 #define	flat_set_persistent(relval, p)		0
 #define	flat_set_persistent(relval, p)		0
 
 

+ 1 - 1
fs/Kconfig.binfmt

@@ -89,7 +89,7 @@ config BINFMT_SCRIPT
 
 
 config BINFMT_FLAT
 config BINFMT_FLAT
 	bool "Kernel support for flat binaries"
 	bool "Kernel support for flat binaries"
-	depends on !MMU || M68K
+	depends on !MMU || ARM || M68K
 	depends on !FRV || BROKEN
 	depends on !FRV || BROKEN
 	help
 	help
 	  Support uClinux FLAT format binaries.
 	  Support uClinux FLAT format binaries.