diff options
Diffstat (limited to 'arch/um/sys-x86_64/syscalls.c')
-rw-r--r-- | arch/um/sys-x86_64/syscalls.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c index 68205a03364c..ab4b0abf8af3 100644 --- a/arch/um/sys-x86_64/syscalls.c +++ b/arch/um/sys-x86_64/syscalls.c | |||
@@ -14,11 +14,15 @@ | |||
14 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ | 14 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ |
15 | #include "choose-mode.h" | 15 | #include "choose-mode.h" |
16 | 16 | ||
17 | asmlinkage long wrap_sys_shmat(int shmid, char __user *shmaddr, int shmflg) | 17 | asmlinkage long sys_uname64(struct new_utsname __user * name) |
18 | { | 18 | { |
19 | unsigned long raddr; | 19 | int err; |
20 | 20 | down_read(&uts_sem); | |
21 | return do_shmat(shmid, shmaddr, shmflg, &raddr) ?: (long) raddr; | 21 | err = copy_to_user(name, &system_utsname, sizeof (*name)); |
22 | up_read(&uts_sem); | ||
23 | if (personality(current->personality) == PER_LINUX32) | ||
24 | err |= copy_to_user(&name->machine, "i686", 5); | ||
25 | return err ? -EFAULT : 0; | ||
22 | } | 26 | } |
23 | 27 | ||
24 | #ifdef CONFIG_MODE_TT | 28 | #ifdef CONFIG_MODE_TT |