improve sys_newuname() for compat architectures
On an architecture that supports 32-bit compat we need to override the reported machine in uname with the 32-bit value. Instead of doing this separately in every architecture introduce a COMPAT_UTS_MACHINE define in <asm/compat.h> and apply it directly in sys_newuname(). 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
baed7fc9b5
commit
e28cbf2293
@ -234,18 +234,3 @@ long parisc_personality(unsigned long personality)
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
long parisc_newuname(struct new_utsname __user *name)
|
||||
{
|
||||
int err = sys_newuname(name);
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
if (!err && personality(current->personality) == PER_LINUX32) {
|
||||
if (__put_user(0, name->machine + 6) ||
|
||||
__put_user(0, name->machine + 7))
|
||||
err = -EFAULT;
|
||||
}
|
||||
#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
|
@ -127,7 +127,7 @@
|
||||
ENTRY_SAME(socketpair)
|
||||
ENTRY_SAME(setpgid)
|
||||
ENTRY_SAME(send)
|
||||
ENTRY_OURS(newuname)
|
||||
ENTRY_SAME(newuname)
|
||||
ENTRY_SAME(umask) /* 60 */
|
||||
ENTRY_SAME(chroot)
|
||||
ENTRY_COMP(ustat)
|
||||
|
Reference in New Issue
Block a user