diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2007-07-19 04:48:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 13:04:45 -0400 |
commit | b111757c50ee30dad162192df6168e270a90c252 (patch) | |
tree | 49a38ddb2fd5f53ceb4f76c802c2185c1be9a6c6 | |
parent | f34e3b61f2be9628bd41244f3ecc42009c5eced5 (diff) |
arch: personality independent stack top
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>
-rw-r--r-- | include/asm-alpha/a.out.h | 2 | ||||
-rw-r--r-- | include/asm-arm/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-arm26/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-avr32/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-cris/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-frv/mem-layout.h | 1 | ||||
-rw-r--r-- | include/asm-h8300/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-i386/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-ia64/ustack.h | 1 | ||||
-rw-r--r-- | include/asm-m32r/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-m68k/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-mips/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-parisc/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-powerpc/a.out.h | 3 | ||||
-rw-r--r-- | include/asm-s390/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-sh/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-sh64/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-sparc/a.out.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/a.out.h | 2 | ||||
-rw-r--r-- | include/asm-um/a.out.h | 2 | ||||
-rw-r--r-- | include/asm-x86_64/a.out.h | 3 | ||||
-rw-r--r-- | include/asm-xtensa/a.out.h | 1 |
22 files changed, 28 insertions, 1 deletions
diff --git a/include/asm-alpha/a.out.h b/include/asm-alpha/a.out.h index d97daf42753d..e43cf61649a9 100644 --- a/include/asm-alpha/a.out.h +++ b/include/asm-alpha/a.out.h | |||
@@ -101,6 +101,8 @@ struct exec | |||
101 | #define STACK_TOP \ | 101 | #define STACK_TOP \ |
102 | (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL) | 102 | (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL) |
103 | 103 | ||
104 | #define STACK_TOP_MAX 0x00120000000UL | ||
105 | |||
104 | #endif | 106 | #endif |
105 | 107 | ||
106 | #endif /* __A_OUT_GNU_H__ */ | 108 | #endif /* __A_OUT_GNU_H__ */ |
diff --git a/include/asm-arm/a.out.h b/include/asm-arm/a.out.h index 3e5fe64c4394..d7165e86df25 100644 --- a/include/asm-arm/a.out.h +++ b/include/asm-arm/a.out.h | |||
@@ -30,6 +30,7 @@ struct exec | |||
30 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
31 | #define STACK_TOP ((current->personality == PER_LINUX_32BIT) ? \ | 31 | #define STACK_TOP ((current->personality == PER_LINUX_32BIT) ? \ |
32 | TASK_SIZE : TASK_SIZE_26) | 32 | TASK_SIZE : TASK_SIZE_26) |
33 | #define STACK_TOP_MAX TASK_SIZE | ||
33 | #endif | 34 | #endif |
34 | 35 | ||
35 | #ifndef LIBRARY_START_TEXT | 36 | #ifndef LIBRARY_START_TEXT |
diff --git a/include/asm-arm26/a.out.h b/include/asm-arm26/a.out.h index 9b2702c42c87..7167f54ae3fc 100644 --- a/include/asm-arm26/a.out.h +++ b/include/asm-arm26/a.out.h | |||
@@ -29,6 +29,7 @@ struct exec | |||
29 | 29 | ||
30 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
31 | #define STACK_TOP TASK_SIZE | 31 | #define STACK_TOP TASK_SIZE |
32 | #define STACK_TOP_MAX STACK_TOP | ||
32 | #endif | 33 | #endif |
33 | 34 | ||
34 | #ifndef LIBRARY_START_TEXT | 35 | #ifndef LIBRARY_START_TEXT |
diff --git a/include/asm-avr32/a.out.h b/include/asm-avr32/a.out.h index 50bf6e31a143..9f398ab28ed0 100644 --- a/include/asm-avr32/a.out.h +++ b/include/asm-avr32/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-cris/a.out.h b/include/asm-cris/a.out.h index 770734ce54a6..919b34a084f8 100644 --- a/include/asm-cris/a.out.h +++ b/include/asm-cris/a.out.h | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | /* grabbed from the intel stuff */ | 9 | /* grabbed from the intel stuff */ |
10 | #define STACK_TOP TASK_SIZE | 10 | #define STACK_TOP TASK_SIZE |
11 | #define STACK_TOP_MAX STACK_TOP | ||
11 | 12 | ||
12 | 13 | ||
13 | struct exec | 14 | struct exec |
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h index a025dd4514e7..aaf2a773d9d3 100644 --- a/include/asm-frv/mem-layout.h +++ b/include/asm-frv/mem-layout.h | |||
@@ -60,6 +60,7 @@ | |||
60 | */ | 60 | */ |
61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) | 61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) |
62 | #define STACK_TOP __UL(2 * 1024 * 1024) | 62 | #define STACK_TOP __UL(2 * 1024 * 1024) |
63 | #define STACK_TOP_MAX STACK_TOP | ||
63 | 64 | ||
64 | /* userspace process size */ | 65 | /* userspace process size */ |
65 | #ifdef CONFIG_MMU | 66 | #ifdef CONFIG_MMU |
diff --git a/include/asm-h8300/a.out.h b/include/asm-h8300/a.out.h index 3c70939f9f00..aa5d22778235 100644 --- a/include/asm-h8300/a.out.h +++ b/include/asm-h8300/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-i386/a.out.h b/include/asm-i386/a.out.h index ab17bb8e5465..851a60f8258c 100644 --- a/include/asm-i386/a.out.h +++ b/include/asm-i386/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-ia64/ustack.h b/include/asm-ia64/ustack.h index a349467913ea..504167c35b8b 100644 --- a/include/asm-ia64/ustack.h +++ b/include/asm-ia64/ustack.h | |||
@@ -11,6 +11,7 @@ | |||
11 | /* The absolute hard limit for stack size is 1/2 of the mappable space in the region */ | 11 | /* The absolute hard limit for stack size is 1/2 of the mappable space in the region */ |
12 | #define MAX_USER_STACK_SIZE (RGN_MAP_LIMIT/2) | 12 | #define MAX_USER_STACK_SIZE (RGN_MAP_LIMIT/2) |
13 | #define STACK_TOP (0x6000000000000000UL + RGN_MAP_LIMIT) | 13 | #define STACK_TOP (0x6000000000000000UL + RGN_MAP_LIMIT) |
14 | #define STACK_TOP_MAX STACK_TOP | ||
14 | #endif | 15 | #endif |
15 | 16 | ||
16 | /* Make a default stack size of 2GiB */ | 17 | /* Make a default stack size of 2GiB */ |
diff --git a/include/asm-m32r/a.out.h b/include/asm-m32r/a.out.h index 9a4a5d20160a..6a1b5d42f328 100644 --- a/include/asm-m32r/a.out.h +++ b/include/asm-m32r/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-m68k/a.out.h b/include/asm-m68k/a.out.h index eda1662773b8..6fc86a221a94 100644 --- a/include/asm-m68k/a.out.h +++ b/include/asm-m68k/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-mips/a.out.h b/include/asm-mips/a.out.h index ef33c3f13484..1ad60ba186d0 100644 --- a/include/asm-mips/a.out.h +++ b/include/asm-mips/a.out.h | |||
@@ -40,6 +40,7 @@ struct exec | |||
40 | #ifdef CONFIG_64BIT | 40 | #ifdef CONFIG_64BIT |
41 | #define STACK_TOP (current->thread.mflags & MF_32BIT_ADDR ? TASK_SIZE32 : TASK_SIZE) | 41 | #define STACK_TOP (current->thread.mflags & MF_32BIT_ADDR ? TASK_SIZE32 : TASK_SIZE) |
42 | #endif | 42 | #endif |
43 | #define STACK_TOP_MAX TASK_SIZE | ||
43 | 44 | ||
44 | #endif | 45 | #endif |
45 | 46 | ||
diff --git a/include/asm-parisc/a.out.h b/include/asm-parisc/a.out.h index 2a490cc9ec91..23e2c90943e5 100644 --- a/include/asm-parisc/a.out.h +++ b/include/asm-parisc/a.out.h | |||
@@ -23,6 +23,7 @@ struct exec | |||
23 | * prumpf */ | 23 | * prumpf */ |
24 | 24 | ||
25 | #define STACK_TOP TASK_SIZE | 25 | #define STACK_TOP TASK_SIZE |
26 | #define STACK_TOP_MAX DEFAULT_TASK_SIZE | ||
26 | 27 | ||
27 | #endif | 28 | #endif |
28 | 29 | ||
diff --git a/include/asm-powerpc/a.out.h b/include/asm-powerpc/a.out.h index c7393a977364..5c5ea83f9349 100644 --- a/include/asm-powerpc/a.out.h +++ b/include/asm-powerpc/a.out.h | |||
@@ -26,9 +26,12 @@ struct exec | |||
26 | #define STACK_TOP (test_thread_flag(TIF_32BIT) ? \ | 26 | #define STACK_TOP (test_thread_flag(TIF_32BIT) ? \ |
27 | STACK_TOP_USER32 : STACK_TOP_USER64) | 27 | STACK_TOP_USER32 : STACK_TOP_USER64) |
28 | 28 | ||
29 | #define STACK_TOP_MAX STACK_TOP_USER64 | ||
30 | |||
29 | #else /* __powerpc64__ */ | 31 | #else /* __powerpc64__ */ |
30 | 32 | ||
31 | #define STACK_TOP TASK_SIZE | 33 | #define STACK_TOP TASK_SIZE |
34 | #define STACK_TOP_MAX STACK_TOP | ||
32 | 35 | ||
33 | #endif /* __powerpc64__ */ | 36 | #endif /* __powerpc64__ */ |
34 | #endif /* __KERNEL__ */ | 37 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-s390/a.out.h b/include/asm-s390/a.out.h index 72adee6ef338..46158dcaf517 100644 --- a/include/asm-s390/a.out.h +++ b/include/asm-s390/a.out.h | |||
@@ -32,6 +32,7 @@ struct exec | |||
32 | #ifdef __KERNEL__ | 32 | #ifdef __KERNEL__ |
33 | 33 | ||
34 | #define STACK_TOP TASK_SIZE | 34 | #define STACK_TOP TASK_SIZE |
35 | #define STACK_TOP_MAX DEFAULT_TASK_SIZE | ||
35 | 36 | ||
36 | #endif | 37 | #endif |
37 | 38 | ||
diff --git a/include/asm-sh/a.out.h b/include/asm-sh/a.out.h index 6e9fca9ee333..685d0f6125fa 100644 --- a/include/asm-sh/a.out.h +++ b/include/asm-sh/a.out.h | |||
@@ -20,6 +20,7 @@ struct exec | |||
20 | #ifdef __KERNEL__ | 20 | #ifdef __KERNEL__ |
21 | 21 | ||
22 | #define STACK_TOP TASK_SIZE | 22 | #define STACK_TOP TASK_SIZE |
23 | #define STACK_TOP_MAX STACK_TOP | ||
23 | 24 | ||
24 | #endif | 25 | #endif |
25 | 26 | ||
diff --git a/include/asm-sh64/a.out.h b/include/asm-sh64/a.out.h index e1995e86b663..237ee4e5b72a 100644 --- a/include/asm-sh64/a.out.h +++ b/include/asm-sh64/a.out.h | |||
@@ -31,6 +31,7 @@ struct exec | |||
31 | #ifdef __KERNEL__ | 31 | #ifdef __KERNEL__ |
32 | 32 | ||
33 | #define STACK_TOP TASK_SIZE | 33 | #define STACK_TOP TASK_SIZE |
34 | #define STACK_TOP_MAX STACK_TOP | ||
34 | 35 | ||
35 | #endif | 36 | #endif |
36 | 37 | ||
diff --git a/include/asm-sparc/a.out.h b/include/asm-sparc/a.out.h index 9090060a23e6..917e04250696 100644 --- a/include/asm-sparc/a.out.h +++ b/include/asm-sparc/a.out.h | |||
@@ -92,6 +92,7 @@ struct relocation_info /* used when header.a_machtype == M_SPARC */ | |||
92 | #include <asm/page.h> | 92 | #include <asm/page.h> |
93 | 93 | ||
94 | #define STACK_TOP (PAGE_OFFSET - PAGE_SIZE) | 94 | #define STACK_TOP (PAGE_OFFSET - PAGE_SIZE) |
95 | #define STACK_TOP_MAX STACK_TOP | ||
95 | 96 | ||
96 | #endif /* __KERNEL__ */ | 97 | #endif /* __KERNEL__ */ |
97 | 98 | ||
diff --git a/include/asm-sparc64/a.out.h b/include/asm-sparc64/a.out.h index eb3b8e90b279..902e07f89a42 100644 --- a/include/asm-sparc64/a.out.h +++ b/include/asm-sparc64/a.out.h | |||
@@ -101,6 +101,8 @@ struct relocation_info /* used when header.a_machtype == M_SPARC */ | |||
101 | #define STACK_TOP (test_thread_flag(TIF_32BIT) ? \ | 101 | #define STACK_TOP (test_thread_flag(TIF_32BIT) ? \ |
102 | STACK_TOP32 : STACK_TOP64) | 102 | STACK_TOP32 : STACK_TOP64) |
103 | 103 | ||
104 | #define STACK_TOP_MAX STACK_TOP64 | ||
105 | |||
104 | #endif | 106 | #endif |
105 | 107 | ||
106 | #endif /* !(__ASSEMBLY__) */ | 108 | #endif /* !(__ASSEMBLY__) */ |
diff --git a/include/asm-um/a.out.h b/include/asm-um/a.out.h index 7016b893ac9d..78bc9eed26b2 100644 --- a/include/asm-um/a.out.h +++ b/include/asm-um/a.out.h | |||
@@ -17,4 +17,6 @@ extern int honeypot; | |||
17 | #define STACK_TOP \ | 17 | #define STACK_TOP \ |
18 | CHOOSE_MODE((honeypot ? host_task_size : task_size), task_size) | 18 | CHOOSE_MODE((honeypot ? host_task_size : task_size), task_size) |
19 | 19 | ||
20 | #define STACK_TOP_MAX STACK_TOP | ||
21 | |||
20 | #endif | 22 | #endif |
diff --git a/include/asm-x86_64/a.out.h b/include/asm-x86_64/a.out.h index 7255cde06538..e789300e41a5 100644 --- a/include/asm-x86_64/a.out.h +++ b/include/asm-x86_64/a.out.h | |||
@@ -21,7 +21,8 @@ struct exec | |||
21 | 21 | ||
22 | #ifdef __KERNEL__ | 22 | #ifdef __KERNEL__ |
23 | #include <linux/thread_info.h> | 23 | #include <linux/thread_info.h> |
24 | #define STACK_TOP TASK_SIZE | 24 | #define STACK_TOP TASK_SIZE |
25 | #define STACK_TOP_MAX TASK_SIZE64 | ||
25 | #endif | 26 | #endif |
26 | 27 | ||
27 | #endif /* __A_OUT_GNU_H__ */ | 28 | #endif /* __A_OUT_GNU_H__ */ |
diff --git a/include/asm-xtensa/a.out.h b/include/asm-xtensa/a.out.h index ffc4dcfd6ac1..05a2f67c6768 100644 --- a/include/asm-xtensa/a.out.h +++ b/include/asm-xtensa/a.out.h | |||
@@ -17,6 +17,7 @@ | |||
17 | /* Note: the kernel needs the a.out definitions, even if only ELF is used. */ | 17 | /* Note: the kernel needs the a.out definitions, even if only ELF is used. */ |
18 | 18 | ||
19 | #define STACK_TOP TASK_SIZE | 19 | #define STACK_TOP TASK_SIZE |
20 | #define STACK_TOP_MAX STACK_TOP | ||
20 | 21 | ||
21 | struct exec | 22 | struct exec |
22 | { | 23 | { |