Skip to content

Commit

Permalink
arch: personality independent stack top
Browse files Browse the repository at this point in the history
New arch macro STACK_TOP_MAX it gives the larges valid stack address for the
architecture in question.

It differs from STACK_TOP in that it will not distinguish between
personalities but will always return the largest possible address.

This is used to create the initial stack on execve, which we will move down to
the proper location once the binfmt code has figured out where that is.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ollie Wild <aaw@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Peter Zijlstra authored and Linus Torvalds committed Jul 19, 2007
1 parent f34e3b6 commit b111757
Show file tree
Hide file tree
Showing 22 changed files with 28 additions and 1 deletion.
2 changes: 2 additions & 0 deletions include/asm-alpha/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ struct exec
#define STACK_TOP \
(current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL)

#define STACK_TOP_MAX 0x00120000000UL

#endif

#endif /* __A_OUT_GNU_H__ */
1 change: 1 addition & 0 deletions include/asm-arm/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ struct exec
#ifdef __KERNEL__
#define STACK_TOP ((current->personality == PER_LINUX_32BIT) ? \
TASK_SIZE : TASK_SIZE_26)
#define STACK_TOP_MAX TASK_SIZE
#endif

#ifndef LIBRARY_START_TEXT
Expand Down
1 change: 1 addition & 0 deletions include/asm-arm26/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ struct exec

#ifdef __KERNEL__
#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP
#endif

#ifndef LIBRARY_START_TEXT
Expand Down
1 change: 1 addition & 0 deletions include/asm-avr32/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-cris/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

/* grabbed from the intel stuff */
#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP


struct exec
Expand Down
1 change: 1 addition & 0 deletions include/asm-frv/mem-layout.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
*/
#define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE)
#define STACK_TOP __UL(2 * 1024 * 1024)
#define STACK_TOP_MAX STACK_TOP

/* userspace process size */
#ifdef CONFIG_MMU
Expand Down
1 change: 1 addition & 0 deletions include/asm-h8300/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-i386/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-ia64/ustack.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
/* The absolute hard limit for stack size is 1/2 of the mappable space in the region */
#define MAX_USER_STACK_SIZE (RGN_MAP_LIMIT/2)
#define STACK_TOP (0x6000000000000000UL + RGN_MAP_LIMIT)
#define STACK_TOP_MAX STACK_TOP
#endif

/* Make a default stack size of 2GiB */
Expand Down
1 change: 1 addition & 0 deletions include/asm-m32r/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-m68k/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-mips/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct exec
#ifdef CONFIG_64BIT
#define STACK_TOP (current->thread.mflags & MF_32BIT_ADDR ? TASK_SIZE32 : TASK_SIZE)
#endif
#define STACK_TOP_MAX TASK_SIZE

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-parisc/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ struct exec
* prumpf */

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX DEFAULT_TASK_SIZE

#endif

Expand Down
3 changes: 3 additions & 0 deletions include/asm-powerpc/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,12 @@ struct exec
#define STACK_TOP (test_thread_flag(TIF_32BIT) ? \
STACK_TOP_USER32 : STACK_TOP_USER64)

#define STACK_TOP_MAX STACK_TOP_USER64

#else /* __powerpc64__ */

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif /* __powerpc64__ */
#endif /* __KERNEL__ */
Expand Down
1 change: 1 addition & 0 deletions include/asm-s390/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX DEFAULT_TASK_SIZE

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-sh/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-sh64/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ struct exec
#ifdef __KERNEL__

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

#endif

Expand Down
1 change: 1 addition & 0 deletions include/asm-sparc/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ struct relocation_info /* used when header.a_machtype == M_SPARC */
#include <asm/page.h>

#define STACK_TOP (PAGE_OFFSET - PAGE_SIZE)
#define STACK_TOP_MAX STACK_TOP

#endif /* __KERNEL__ */

Expand Down
2 changes: 2 additions & 0 deletions include/asm-sparc64/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ struct relocation_info /* used when header.a_machtype == M_SPARC */
#define STACK_TOP (test_thread_flag(TIF_32BIT) ? \
STACK_TOP32 : STACK_TOP64)

#define STACK_TOP_MAX STACK_TOP64

#endif

#endif /* !(__ASSEMBLY__) */
Expand Down
2 changes: 2 additions & 0 deletions include/asm-um/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ extern int honeypot;
#define STACK_TOP \
CHOOSE_MODE((honeypot ? host_task_size : task_size), task_size)

#define STACK_TOP_MAX STACK_TOP

#endif
3 changes: 2 additions & 1 deletion include/asm-x86_64/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ struct exec

#ifdef __KERNEL__
#include <linux/thread_info.h>
#define STACK_TOP TASK_SIZE
#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX TASK_SIZE64
#endif

#endif /* __A_OUT_GNU_H__ */
1 change: 1 addition & 0 deletions include/asm-xtensa/a.out.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
/* Note: the kernel needs the a.out definitions, even if only ELF is used. */

#define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP

struct exec
{
Expand Down

0 comments on commit b111757

Please sign in to comment.