diff options
author | Christoph Hellwig <hch@lst.de> | 2010-03-10 18:21:21 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-12 18:52:32 -0500 |
commit | 5cacdb4add1b1e50fe75edc50ebbb7bddd9cf5e7 (patch) | |
tree | bd6595bb8c5c7e20ad01ed7ef766d873e5d26db3 /arch/x86/ia32 | |
parent | e28cbf22933d0c0ccaf3c4c27a1a263b41f73859 (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.S | 4 | ||||
-rw-r--r-- | arch/x86/ia32/sys_ia32.c | 52 |
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 | ||
451 | asmlinkage 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 | |||
488 | long 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 | |||
503 | asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv, | 451 | asmlinkage 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 | { |