diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-02-07 03:15:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 11:42:30 -0500 |
commit | 6e16d89bcd668a95eb22add24c02d80890232b66 (patch) | |
tree | 8d5fcab14edac7d36c67e8a57abb5025cfaa2c2d /arch/x86/ia32/ia32_aout.c | |
parent | ed7b1889da256977574663689b598d88950bbd23 (diff) |
Sanitize the type of struct user.u_ar0
struct user.u_ar0 is defined to contain a pointer offset on all
architectures in which it is defined (all architectures which define an
a.out format except SPARC.) However, it has a pointer type in the headers,
which is pointless -- <asm/user.h> is not exported to userspace, and it
just makes the code messy.
Redefine the field as "unsigned long" (which is the same size as a pointer
on all Linux architectures) and change the setting code to user offsetof()
instead of hand-coded arithmetic.
Cc: Linux Arch Mailing List <linux-arch@vger.kernel.org>
Cc: Bryan Wu <bryan.wu@analog.com>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Lennert Buytenhek <kernel@wantstofly.org>
Cc: HÃ¥vard Skinnemoen <hskinnemoen@atmel.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/x86/ia32/ia32_aout.c')
-rw-r--r-- | arch/x86/ia32/ia32_aout.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c index e4c12079171b..58cccb6483b0 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c | |||
@@ -172,8 +172,7 @@ static int aout_core_dump(long signr, struct pt_regs *regs, struct file *file, | |||
172 | has_dumped = 1; | 172 | has_dumped = 1; |
173 | current->flags |= PF_DUMPCORE; | 173 | current->flags |= PF_DUMPCORE; |
174 | strncpy(dump.u_comm, current->comm, sizeof(current->comm)); | 174 | strncpy(dump.u_comm, current->comm, sizeof(current->comm)); |
175 | dump.u_ar0 = (u32)(((unsigned long)(&dump.regs)) - | 175 | dump.u_ar0 = offsetof(struct user32, regs); |
176 | ((unsigned long)(&dump))); | ||
177 | dump.signal = signr; | 176 | dump.signal = signr; |
178 | dump_thread32(regs, &dump); | 177 | dump_thread32(regs, &dump); |
179 | 178 | ||