aboutsummaryrefslogtreecommitdiff
path: root/arch/um/sys-x86_64/syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/sys-x86_64/syscalls.c')
-rw-r--r--arch/um/sys-x86_64/syscalls.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c
index 68205a03364..15768c96ceb 100644
--- a/arch/um/sys-x86_64/syscalls.c
+++ b/arch/um/sys-x86_64/syscalls.c
@@ -14,6 +14,7 @@
#include "asm/prctl.h" /* XXX This should get the constants from libc */
#include "choose-mode.h"
+/* XXX: copied from x86-64: arch/x86_64/kernel/sys_x86_64.c */
asmlinkage long wrap_sys_shmat(int shmid, char __user *shmaddr, int shmflg)
{
unsigned long raddr;
@@ -21,6 +22,17 @@ asmlinkage long wrap_sys_shmat(int shmid, char __user *shmaddr, int shmflg)
return do_shmat(shmid, shmaddr, shmflg, &raddr) ?: (long) raddr;
}
+asmlinkage long sys_uname64(struct new_utsname __user * name)
+{
+ int err;
+ down_read(&uts_sem);
+ err = copy_to_user(name, &system_utsname, sizeof (*name));
+ up_read(&uts_sem);
+ if (personality(current->personality) == PER_LINUX32)
+ err |= copy_to_user(&name->machine, "i686", 5);
+ return err ? -EFAULT : 0;
+}
+
#ifdef CONFIG_MODE_TT
extern int modify_ldt(int func, void *ptr, unsigned long bytecount);