Skip to contentSkip to conversation

Bring x86-64 ia32 emul in sync with i386 on READ_IMPLIES_EXEC enabling

PATCH In review Markus Schoder 2 participants 2 messages Jul 2, 2006 – Jul 4, 2006 exec and binfmt

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Bring x86-64 ia32 emul in sync with i386 on READ_IMPLIES_EXEC enabling

Currently ia32 binaries behave differently with respect to enabling READ_IMPLIES_EXEC. On i386 a binary with the exec_stack flag set is executed with READ_IMPLIES_EXEC enabled as well. The same binary executes without READ_IMPLIES_EXEC on x86-64.

This causes binaries that work on i386 to fail on x86-64 which goes somewhat against the whole 32 bit emulation idea.

It has been argued that READ_IMPLIES_EXEC should not be enabled at all for binaries that have the exec_stack flag. Which is probably a valid point. However until this is clarified I think x86-64 should behave the same for ia32 binaries as i386.

The following patch brings x86-64 in sync with i386 for ia32 binaries.

-----

arch/x86_64/ia32/ia32_binfmt.c 2006-07-01 16:59:56.121915808 +0200 renamed from arch/x86_64/ia32/ia32_binfmt.c 2006-06-18 15:10:19.000000000 +0200 +1 -1
diff -u -r linux-2.6.17.3.old/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.17.3/arch/x86_64/ia32/ia32_binfmt.c
@@ -182,7 +182,7 @@
 #define user user32
 
 #define __ASM_X86_64_ELF_H 1
-#define elf_read_implies_exec(ex, have_pt_gnu_stack)   (!(have_pt_gnu_stack))
+#define elf_read_implies_exec(ex, executable_stack)     (executable_stack != EXSTACK_DISABLE_X)
 //#include <asm/ia32.h>
 #include <linux/elf.h>
 
#1 lore raw
Quoted 2 lines

The following patch brings x86-64 in sync with i386 for ia32 binaries.

Added. Thanks

-Andi