mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
parisc,metag: Do not hardcode maximum userspace stack size
This patch affects only architectures where the stack grows upwards (currently parisc and metag only). On those do not hardcode the maximum initial stack size to 1GB for 32-bit processes, but make it configurable via a config option. The main problem with the hardcoded stack size is, that we have two memory regions which grow upwards: stack and heap. To keep most of the memory available for heap in a flexmap memory layout, it makes no sense to hard allocate up to 1GB of the memory for stack which can't be used as heap then. This patch makes the stack size for 32-bit processes configurable and uses 80MB as default value which has been in use during the last few years on parisc and which hasn't showed any problems yet. Signed-off-by: Helge Deller <[email protected]> Signed-off-by: James Hogan <[email protected]> Cc: "James E.J. Bottomley" <[email protected]> Cc: [email protected] Cc: [email protected] Cc: John David Anglin <[email protected]>
This commit is contained in:
parent
d71f290b4e
commit
042d27acb6
4 changed files with 23 additions and 5 deletions
|
|
@ -55,7 +55,10 @@
|
|||
#define STACK_TOP TASK_SIZE
|
||||
#define STACK_TOP_MAX DEFAULT_TASK_SIZE
|
||||
|
||||
#define STACK_SIZE_MAX (1 << 30) /* 1 GB */
|
||||
/* Allow bigger stacks for 64-bit processes */
|
||||
#define STACK_SIZE_MAX (USER_WIDE_MODE \
|
||||
? (1 << 30) /* 1 GB */ \
|
||||
: (CONFIG_MAX_STACK_SIZE_MB*1024*1024))
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@ static unsigned long mmap_upper_limit(void)
|
|||
{
|
||||
unsigned long stack_base;
|
||||
|
||||
/* Limit stack size to 1GB - see setup_arg_pages() in fs/exec.c */
|
||||
/* Limit stack size - see setup_arg_pages() in fs/exec.c */
|
||||
stack_base = rlimit_max(RLIMIT_STACK);
|
||||
if (stack_base > (1 << 30))
|
||||
stack_base = 1 << 30;
|
||||
if (stack_base > STACK_SIZE_MAX)
|
||||
stack_base = STACK_SIZE_MAX;
|
||||
|
||||
return PAGE_ALIGN(STACK_TOP - stack_base);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue