diff options
author | Markus Schoder <lists@gammarayburst.de> | 2006-07-10 17:06:06 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-10 15:12:32 -0700 |
commit | 3391c22e5b6aaeb289bcc1ad0d5b3f2ba5421f22 (patch) | |
tree | 2fe664aea3492f5e8afeab95298fb67aa1813096 /arch/x86_64/ia32/ia32_binfmt.c | |
parent | d5d8ad78b05d13c658aae8f4b06b6d339f13fd58 (diff) | |
download | talos-op-linux-3391c22e5b6aaeb289bcc1ad0d5b3f2ba5421f22.tar.gz talos-op-linux-3391c22e5b6aaeb289bcc1ad0d5b3f2ba5421f22.zip |
[PATCH] x86_64: 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.
Signed-off-by: Markus Schoder <lists@gammarayburst.de>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/ia32/ia32_binfmt.c')
-rw-r--r-- | arch/x86_64/ia32/ia32_binfmt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c index 926c4743d13b..a9dc0f3b5b51 100644 --- a/arch/x86_64/ia32/ia32_binfmt.c +++ b/arch/x86_64/ia32/ia32_binfmt.c @@ -182,7 +182,7 @@ struct elf_prpsinfo #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> |