aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2009-01-23 10:40:23 -0500
committerHeiko Carstens <heiko.carstens@de.ibm.com>2009-01-23 10:40:28 -0500
commit03e4c49f847f23c62900424f65a62f76de5a7151 (patch)
tree4b08234e317091e2bab8998cc256f60e303e3c0a
parentf3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b (diff)
[S390] personality: fix personality loss on execve
Use the personality() macro to mask out all bits that are not relevant for the personality type. The personality field contains bits for other things as well, so without masking out the not relevalent bits the comparison won't do what is expected. Reported-by: Andreas Krebbel <krebbel@linux.vnet.ibm.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
-rw-r--r--arch/s390/include/asm/elf.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index d480f39d65e6..74d0bbb7d955 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -172,14 +172,14 @@ extern char elf_platform[];
172#ifndef __s390x__ 172#ifndef __s390x__
173#define SET_PERSONALITY(ex) set_personality(PER_LINUX) 173#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
174#else /* __s390x__ */ 174#else /* __s390x__ */
175#define SET_PERSONALITY(ex) \ 175#define SET_PERSONALITY(ex) \
176do { \ 176do { \
177 if (current->personality != PER_LINUX32) \ 177 if (personality(current->personality) != PER_LINUX32) \
178 set_personality(PER_LINUX); \ 178 set_personality(PER_LINUX); \
179 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ 179 if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
180 set_thread_flag(TIF_31BIT); \ 180 set_thread_flag(TIF_31BIT); \
181 else \ 181 else \
182 clear_thread_flag(TIF_31BIT); \ 182 clear_thread_flag(TIF_31BIT); \
183} while (0) 183} while (0)
184#endif /* __s390x__ */ 184#endif /* __s390x__ */
185 185