aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/ia32
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2010-03-10 18:21:21 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2010-03-12 18:52:32 -0500
commit5cacdb4add1b1e50fe75edc50ebbb7bddd9cf5e7 (patch)
treebd6595bb8c5c7e20ad01ed7ef766d873e5d26db3 /arch/x86/ia32
parente28cbf22933d0c0ccaf3c4c27a1a263b41f73859 (diff)
Add generic sys_olduname()
Add generic implementations of the old and really old uname system calls. Note that sh only implements sys_olduname but not sys_oldolduname, but I'm not going to bother with another ifdef for that special case. m32r implemented an old uname but never wired it up, so kill it, too. Signed-off-by: Christoph Hellwig <hch@lst.de> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Jeff Dike <jdike@addtoit.com> Cc: Hirokazu Takata <takata@linux-m32r.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: "Luck, Tony" <tony.luck@intel.com> Cc: James Morris <jmorris@namei.org> Cc: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/x86/ia32')
-rw-r--r--arch/x86/ia32/ia32entry.S4
-rw-r--r--arch/x86/ia32/sys_ia32.c52
2 files changed, 2 insertions, 54 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
index 34f821802c23..59b4556a5b92 100644
--- a/arch/x86/ia32/ia32entry.S
+++ b/arch/x86/ia32/ia32entry.S
@@ -563,7 +563,7 @@ ia32_sys_call_table:
563 .quad quiet_ni_syscall /* old mpx syscall holder */ 563 .quad quiet_ni_syscall /* old mpx syscall holder */
564 .quad sys_setpgid 564 .quad sys_setpgid
565 .quad quiet_ni_syscall /* old ulimit syscall holder */ 565 .quad quiet_ni_syscall /* old ulimit syscall holder */
566 .quad sys32_olduname 566 .quad sys_olduname
567 .quad sys_umask /* 60 */ 567 .quad sys_umask /* 60 */
568 .quad sys_chroot 568 .quad sys_chroot
569 .quad compat_sys_ustat 569 .quad compat_sys_ustat
@@ -613,7 +613,7 @@ ia32_sys_call_table:
613 .quad compat_sys_newstat 613 .quad compat_sys_newstat
614 .quad compat_sys_newlstat 614 .quad compat_sys_newlstat
615 .quad compat_sys_newfstat 615 .quad compat_sys_newfstat
616 .quad sys32_uname 616 .quad sys_uname
617 .quad stub32_iopl /* 110 */ 617 .quad stub32_iopl /* 110 */
618 .quad sys_vhangup 618 .quad sys_vhangup
619 .quad quiet_ni_syscall /* old "idle" system call */ 619 .quad quiet_ni_syscall /* old "idle" system call */
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c
index 56c99f46e289..74c35431b7d8 100644
--- a/arch/x86/ia32/sys_ia32.c
+++ b/arch/x86/ia32/sys_ia32.c
@@ -448,58 +448,6 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd,
448 return ret; 448 return ret;
449} 449}
450 450
451asmlinkage long sys32_olduname(struct oldold_utsname __user *name)
452{
453 char *arch = "x86_64";
454 int err;
455
456 if (!name)
457 return -EFAULT;
458 if (!access_ok(VERIFY_WRITE, name, sizeof(struct oldold_utsname)))
459 return -EFAULT;
460
461 down_read(&uts_sem);
462
463 err = __copy_to_user(&name->sysname, &utsname()->sysname,
464 __OLD_UTS_LEN);
465 err |= __put_user(0, name->sysname+__OLD_UTS_LEN);
466 err |= __copy_to_user(&name->nodename, &utsname()->nodename,
467 __OLD_UTS_LEN);
468 err |= __put_user(0, name->nodename+__OLD_UTS_LEN);
469 err |= __copy_to_user(&name->release, &utsname()->release,
470 __OLD_UTS_LEN);
471 err |= __put_user(0, name->release+__OLD_UTS_LEN);
472 err |= __copy_to_user(&name->version, &utsname()->version,
473 __OLD_UTS_LEN);
474 err |= __put_user(0, name->version+__OLD_UTS_LEN);
475
476 if (personality(current->personality) == PER_LINUX32)
477 arch = "i686";
478
479 err |= __copy_to_user(&name->machine, arch, strlen(arch) + 1);
480
481 up_read(&uts_sem);
482
483 err = err ? -EFAULT : 0;
484
485 return err;
486}
487
488long sys32_uname(struct old_utsname __user *name)
489{
490 int err;
491
492 if (!name)
493 return -EFAULT;
494 down_read(&uts_sem);
495 err = copy_to_user(name, utsname(), sizeof(*name));
496 up_read(&uts_sem);
497 if (personality(current->personality) == PER_LINUX32)
498 err |= copy_to_user(&name->machine, "i686", 5);
499
500 return err ? -EFAULT : 0;
501}
502
503asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, 451asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv,
504 compat_uptr_t __user *envp, struct pt_regs *regs) 452 compat_uptr_t __user *envp, struct pt_regs *regs)
505{ 453{