tile: fix personality bits handling upon exec()
Historically, the top three bytes of personality have been used for things such as ADDR_NO_RANDOMIZE, which made sense only for specific architectures. We now however have a flag there that is general no matter the architecture (UNAME26); generally we have to be careful to preserve the personality flags across exec(). This patch fixes tile architecture not to forcefully overwrite personality flags during exec(). In addition to that, we fix two other things along the way: - exec_domain switching is fixed -- set_personality() should always be used instead of directly assigning to current->personality. - as pointed out by Arnd Bergmann, PER_LINUX_32BIT is not used anywhere by tile, so let's just drop that in favor of PER_LINUX Signed-off-by: Jiri Kosina <jkosina@suse.cz> Acked-by: Chris Metcalf <cmetcalf@tilera.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
16f3e95b32
commit
9f6547a320
|
@ -156,12 +156,12 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm,
|
|||
#undef SET_PERSONALITY
|
||||
#define SET_PERSONALITY(ex) \
|
||||
do { \
|
||||
current->personality = PER_LINUX; \
|
||||
set_personality(PER_LINUX | (current->personality & (~PER_MASK))); \
|
||||
current_thread_info()->status &= ~TS_COMPAT; \
|
||||
} while (0)
|
||||
#define COMPAT_SET_PERSONALITY(ex) \
|
||||
do { \
|
||||
current->personality = PER_LINUX_32BIT; \
|
||||
set_personality(PER_LINUX | (current->personality & (~PER_MASK))); \
|
||||
current_thread_info()->status |= TS_COMPAT; \
|
||||
} while (0)
|
||||
|
||||
|
|
Loading…
Reference in New Issue