linux-stable/arch
Jiri Kosina c1d171a002 x86: randomize brk
Randomize the location of the heap (brk) for i386 and x86_64.  The range is
randomized in the range starting at current brk location up to 0x02000000
offset for both architectures.  This, together with
pie-executable-randomization.patch and
pie-executable-randomization-fix.patch, should make the address space
randomization on i386 and x86_64 complete.

Arjan says:

This is known to break older versions of some emacs variants, whose dumper
code assumed that the last variable declared in the program is equal to the
start of the dynamically allocated memory region.

(The dumper is the code where emacs effectively dumps core at the end of it's
compilation stage; this coredump is then loaded as the main program during
normal use)

iirc this was 5 years or so; we found this way back when I was at RH and we
first did the security stuff there (including this brk randomization).  It
wasn't all variants of emacs, and it got fixed as a result (I vaguely remember
that emacs already had code to deal with it for other archs/oses, just
ifdeffed wrongly).

It's a rare and wrong assumption as a general thing, just on x86 it mostly
happened to be true (but to be honest, it'll break too if gcc does
something fancy or if the linker does a non-standard order).  Still its
something we should at least document.

Note 2: afaik it only broke the emacs *build*.  I'm not 100% sure about that
(it IS 5 years ago) though.

[ akpm@linux-foundation.org: deuglification ]

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Cc: Arjan van de Ven <arjan@infradead.org>
Cc: Roland McGrath <roland@redhat.com>
Cc: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-01-30 13:30:40 +01:00
..
alpha remove __attribute_used__ 2008-01-28 23:21:18 +01:00
arm Remove references to "make dep" 2008-01-28 23:22:13 +01:00
avr32 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
blackfin all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
cris all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
frv Remove references to "make dep" 2008-01-28 23:22:13 +01:00
h8300 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
ia64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25 2008-01-29 22:54:01 +11:00
m32r all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
m68k all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
m68knommu all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2008-01-29 22:48:03 +11:00
parisc all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25 2008-01-29 22:54:01 +11:00
ppc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25 2008-01-29 22:54:01 +11:00
s390 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sh all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sparc all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
sparc64 remove __attribute_used__ 2008-01-28 23:21:18 +01:00
um remove __attribute_used__ 2008-01-28 23:21:18 +01:00
v850 all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
x86 x86: randomize brk 2008-01-30 13:30:40 +01:00
xtensa Remove references to "make dep" 2008-01-28 23:22:13 +01:00
.gitignore arch: Ignore arch/i386 and arch/x86_64 2008-01-19 21:29:39 -08:00