diff options
author | Jeff Bailey <jeffbailey@google.com> | 2014-05-17 11:05:43 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-05-19 20:55:59 -0400 |
commit | 1efc563865dbc3710c5af7bc1540360a6d06192c (patch) | |
tree | e78613e17ae0124b6ac3f1289b4190f882ab4d9e | |
parent | 21f585073d6347651f2262da187606fa1c4ee16d (diff) |
powerpc: Clear ELF personality flag if ELFv2 is not requested.
powerpc: Clear ELF personality flag if ELFv2 is not requested.
The POWER kernel uses a personality flag to determine whether it should
be setting up function descriptors or not (per the updated ABI). This
flag wasn't being cleared on a new process but instead was being
inherited. The visible effect was that an ELFv2 binary could not execve
to an ELFv1 binary.
Signed-off-by: Jeff Bailey <jeffbailey@google.com>
arch/powerpc/include/asm/elf.h | 2 ++
1 file changed, 2 insertions(+)
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/include/asm/elf.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index 935b5e7a1436..888d8f3f2524 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h | |||
@@ -90,6 +90,8 @@ typedef elf_vrregset_t elf_fpxregset_t; | |||
90 | do { \ | 90 | do { \ |
91 | if (((ex).e_flags & 0x3) == 2) \ | 91 | if (((ex).e_flags & 0x3) == 2) \ |
92 | set_thread_flag(TIF_ELF2ABI); \ | 92 | set_thread_flag(TIF_ELF2ABI); \ |
93 | else \ | ||
94 | clear_thread_flag(TIF_ELF2ABI); \ | ||
93 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | 95 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ |
94 | set_thread_flag(TIF_32BIT); \ | 96 | set_thread_flag(TIF_32BIT); \ |
95 | else \ | 97 | else \ |