Explorar o código

[MIPS] Fix O32 personality(2) call with 0xffffffff argument.

A sign extension bug did result in sys_personality being invoked with a
0xffffffffffffffffUL argument, so querying the current personality didn't
work.

Signed-off-by: Thiemo Seufer <ths@networkno.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Thiemo Seufer %!s(int64=19) %!d(string=hai) anos
pai
achega
53571ce470
Modificáronse 1 ficheiros con 3 adicións e 1 borrados
  1. 3 1
      arch/mips/kernel/linux32.c

+ 3 - 1
arch/mips/kernel/linux32.c

@@ -1055,7 +1055,9 @@ asmlinkage long sys32_newuname(struct new_utsname __user * name)
 asmlinkage int sys32_personality(unsigned long personality)
 asmlinkage int sys32_personality(unsigned long personality)
 {
 {
 	int ret;
 	int ret;
-	if (current->personality == PER_LINUX32 && personality == PER_LINUX)
+	personality &= 0xffffffff;
+	if (personality(current->personality) == PER_LINUX32 &&
+	    personality == PER_LINUX)
 		personality = PER_LINUX32;
 		personality = PER_LINUX32;
 	ret = sys_personality(personality);
 	ret = sys_personality(personality);
 	if (ret == PER_LINUX32)
 	if (ret == PER_LINUX32)