lkml.org 
[lkml]   [2007]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectstruct user . u_ar0
I recently noticed that all architectures appear to have an entry n 
struct user called u_ar0:

struct user_pt_regs * u_ar0; /* Used by gdb to help find the values
for */
/* the registers. */

In all cases, u_ar0 is a pointer type, although the type of pointer
varies with the architecture.

However, under no conditions does this field ever contain a pointer
value! It is set by the a.out code and its derivatives as an offset,
not a pointer value (there are a total of four references in the kernel,
in arch/{m68k,blackfin}/kernel/process.c, arch/x86/ia32/ia32_aout.c and
fs/binfmt_aout.c -- they are all functionally identical and write-only):

dump.u_ar0 = (void *)(((unsigned long)(&dump.regs)) - ((unsigned
long)(&dump)));

Any reason to *NOT* change this field to "unsigned long"? <asm/user.h>,
where struct user is defined, is not exported to userspace in any
architecture as far as I can tell, although <linux/user.h>, which just
contains #include <asm/user.h>, *is* exported (clearly a bug.)

-hpa


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2007-10-28 02:57    [W:1.748 / U:0.264 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site