diff options
| author | J. Bruce Fields <bfields@redhat.com> | 2011-01-11 10:28:36 -0500 |
|---|---|---|
| committer | J. Bruce Fields <bfields@redhat.com> | 2011-01-11 15:02:19 -0500 |
| commit | a2c50f69168deec3f7e47644eb4ef4f8a3ee6910 (patch) | |
| tree | 987197653dcdbf3d33a7c678dbef9cc884f36afa /arch/mips/kernel/linux32.c | |
| parent | 8c3df3e58cde676de4df9363c00f37dbfce08e5c (diff) | |
| parent | 3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff) | |
Merge commit 'v2.6.37' into for-2.6.38-incoming
I made a slight mess of Documentation/filesystems/Locking; resolve
conflicts with upstream before fixing it up.
Diffstat (limited to 'arch/mips/kernel/linux32.c')
| -rw-r--r-- | arch/mips/kernel/linux32.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index 6343b4a5b83..876a75cc376 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c @@ -251,14 +251,15 @@ SYSCALL_DEFINE5(n32_msgrcv, int, msqid, u32, msgp, size_t, msgsz, SYSCALL_DEFINE1(32_personality, unsigned long, personality) { + unsigned int p = personality & 0xffffffff; int ret; - personality &= 0xffffffff; + if (personality(current->personality) == PER_LINUX32 && - personality == PER_LINUX) - personality = PER_LINUX32; - ret = sys_personality(personality); - if (ret == PER_LINUX32) - ret = PER_LINUX; + personality(p) == PER_LINUX) + p = (p & ~PER_MASK) | PER_LINUX32; + ret = sys_personality(p); + if (ret != -1 && personality(ret) == PER_LINUX32) + ret = (ret & ~PER_MASK) | PER_LINUX; return ret; } |
