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>
This commit is contained in:
committed by
Linus Torvalds
parent
e28cbf2293
commit
5cacdb4add
@@ -563,7 +563,7 @@ ia32_sys_call_table:
|
||||
.quad quiet_ni_syscall /* old mpx syscall holder */
|
||||
.quad sys_setpgid
|
||||
.quad quiet_ni_syscall /* old ulimit syscall holder */
|
||||
.quad sys32_olduname
|
||||
.quad sys_olduname
|
||||
.quad sys_umask /* 60 */
|
||||
.quad sys_chroot
|
||||
.quad compat_sys_ustat
|
||||
@@ -613,7 +613,7 @@ ia32_sys_call_table:
|
||||
.quad compat_sys_newstat
|
||||
.quad compat_sys_newlstat
|
||||
.quad compat_sys_newfstat
|
||||
.quad sys32_uname
|
||||
.quad sys_uname
|
||||
.quad stub32_iopl /* 110 */
|
||||
.quad sys_vhangup
|
||||
.quad quiet_ni_syscall /* old "idle" system call */
|
||||
|
||||
@@ -448,58 +448,6 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_olduname(struct oldold_utsname __user *name)
|
||||
{
|
||||
char *arch = "x86_64";
|
||||
int err;
|
||||
|
||||
if (!name)
|
||||
return -EFAULT;
|
||||
if (!access_ok(VERIFY_WRITE, name, sizeof(struct oldold_utsname)))
|
||||
return -EFAULT;
|
||||
|
||||
down_read(&uts_sem);
|
||||
|
||||
err = __copy_to_user(&name->sysname, &utsname()->sysname,
|
||||
__OLD_UTS_LEN);
|
||||
err |= __put_user(0, name->sysname+__OLD_UTS_LEN);
|
||||
err |= __copy_to_user(&name->nodename, &utsname()->nodename,
|
||||
__OLD_UTS_LEN);
|
||||
err |= __put_user(0, name->nodename+__OLD_UTS_LEN);
|
||||
err |= __copy_to_user(&name->release, &utsname()->release,
|
||||
__OLD_UTS_LEN);
|
||||
err |= __put_user(0, name->release+__OLD_UTS_LEN);
|
||||
err |= __copy_to_user(&name->version, &utsname()->version,
|
||||
__OLD_UTS_LEN);
|
||||
err |= __put_user(0, name->version+__OLD_UTS_LEN);
|
||||
|
||||
if (personality(current->personality) == PER_LINUX32)
|
||||
arch = "i686";
|
||||
|
||||
err |= __copy_to_user(&name->machine, arch, strlen(arch) + 1);
|
||||
|
||||
up_read(&uts_sem);
|
||||
|
||||
err = err ? -EFAULT : 0;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
long sys32_uname(struct old_utsname __user *name)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!name)
|
||||
return -EFAULT;
|
||||
down_read(&uts_sem);
|
||||
err = copy_to_user(name, 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;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_execve(char __user *name, compat_uptr_t __user *argv,
|
||||
compat_uptr_t __user *envp, struct pt_regs *regs)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user