From ffed4cce7bdf72931302adeeb957a9c108f410b5 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Sun, 5 Oct 2003 18:00:12 -0700 Subject: [PATCH] [PATCH] Fix linux32 personality on x86-64 Make linux32 ... on x86-64 to do proper uname emulation again. Also changes i386 to i686 because that's more near the truth. --- arch/x86_64/ia32/sys_ia32.c | 7 ++++--- arch/x86_64/kernel/sys_x86_64.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c index e87c153bb2ff8..abf9bd34c6fe8 100644 --- a/arch/x86_64/ia32/sys_ia32.c +++ b/arch/x86_64/ia32/sys_ia32.c @@ -1422,8 +1422,9 @@ asmlinkage long sys32_olduname(struct oldold_utsname * name) __copy_to_user(&name->version,&system_utsname.version,__OLD_UTS_LEN); __put_user(0,name->version+__OLD_UTS_LEN); { - char *arch = current->personality == PER_LINUX32 - ? "i386" : "x86_64"; + char *arch = "x86_64"; + if (personality(current->personality) == PER_LINUX32) + arch = "i686"; __copy_to_user(&name->machine,arch,strlen(arch)+1); } @@ -1443,7 +1444,7 @@ long sys32_uname(struct old_utsname * name) down_read(&uts_sem); err=copy_to_user(name, &system_utsname, sizeof (*name)); up_read(&uts_sem); - if (current->personality == PER_LINUX32) + if (personality(current->personality) == PER_LINUX32) err |= copy_to_user(&name->machine, "i686", 5); return err?-EFAULT:0; } diff --git a/arch/x86_64/kernel/sys_x86_64.c b/arch/x86_64/kernel/sys_x86_64.c index 1e3e5941fd692..f9bf985b52b76 100644 --- a/arch/x86_64/kernel/sys_x86_64.c +++ b/arch/x86_64/kernel/sys_x86_64.c @@ -112,8 +112,8 @@ asmlinkage long sys_uname(struct new_utsname * name) down_read(&uts_sem); err = copy_to_user(name, &system_utsname, sizeof (*name)); up_read(&uts_sem); - if (current->personality == PER_LINUX32) - err |= copy_to_user(&name->machine, "i386", 5); + if (personality(current->personality) == PER_LINUX32) + err |= copy_to_user(&name->machine, "i686", 5); return err ? -EFAULT : 0; } -- 2.53.0