| To: | linux-mips@linux-mips.org, ralf@linux-mips.org |
|---|---|
| Subject: | [PATCH 1/2] MIPS: Quit clobbering personality bits. |
| From: | David Daney <ddaney@caviumnetworks.com> |
| Date: | Mon, 1 Nov 2010 17:43:07 -0700 |
| Cc: | David Daney <ddaney@caviumnetworks.com>, Camm Maguire <camm@maguirefamily.org> |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| Sender: | linux-mips-bounce@linux-mips.org |
The high bits of current->personality carry settings that we don't
want to clobber on each exec. Only clobber them if the lower bits
that indicate either PER_LINUX or PER_LINUX32 are invalid.
The clobbering prevents us from using useful bits like
ADDR_NO_RANDOMIZE.
Reported-by: Camm Maguire <camm@maguirefamily.org>
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Cc: Camm Maguire <camm@maguirefamily.org>
---
arch/mips/include/asm/elf.h | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
index fd1d39e..2ef5e82 100644
--- a/arch/mips/include/asm/elf.h
+++ b/arch/mips/include/asm/elf.h
@@ -249,7 +249,8 @@ extern struct mips_abi mips_abi_n32;
#define SET_PERSONALITY(ex) \
do { \
- set_personality(PER_LINUX); \
+ if (personality(current->personality) != PER_LINUX) \
+ set_personality(PER_LINUX); \
\
current->thread.abi = &mips_abi; \
} while (0)
@@ -296,6 +297,7 @@ do {
\
#define SET_PERSONALITY(ex) \
do { \
+ unsigned int p; \
clear_thread_flag(TIF_32BIT_REGS); \
clear_thread_flag(TIF_32BIT_ADDR); \
\
@@ -304,7 +306,8 @@ do {
\
else \
current->thread.abi = &mips_abi; \
\
- if (current->personality != PER_LINUX32) \
+ p = personality(current->personality); \
+ if (p != PER_LINUX32 && p != PER_LINUX) \
set_personality(PER_LINUX); \
} while (0)
--
1.7.2.3
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: mips and ADDR_NO_RANDOMIZE, Camm Maguire |
|---|---|
| Next by Date: | [PATCH 2/2] MIPS: Don't clobber personality bits in 32-bit sys_personality()., David Daney |
| Previous by Thread: | mips and ADDR_NO_RANDOMIZE, Camm Maguire |
| Next by Thread: | [PATCH 2/2] MIPS: Don't clobber personality bits in 32-bit sys_personality()., David Daney |
| Indexes: | [Date] [Thread] [Top] [All Lists] |