forked from luck/tmp_suning_uos_patched
MIPS: compat: Don't clobber personality bits in 32-bit sys_personality().
If PER_LINUX32 has been set on a 32-bit kernel, only twiddle with the low-order personality bits, let the upper bits pass through. Signed-off-by: David Daney <ddaney@caviumnetworks.com> To: linux-mips@linux-mips.org Cc: Camm Maguire <camm@maguirefamily.org> Patchwork: https://patchwork.linux-mips.org/patch/1751/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
1c0d52b9b5
commit
d62c9ced7c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user