diff options
| -rw-r--r-- | arch/metag/include/asm/processor.h | 2 | ||||
| -rw-r--r-- | arch/parisc/include/asm/processor.h | 2 | ||||
| -rw-r--r-- | fs/exec.c | 6 |
3 files changed, 7 insertions, 3 deletions
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h index f16477d1f571..3be8581af495 100644 --- a/arch/metag/include/asm/processor.h +++ b/arch/metag/include/asm/processor.h | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | /* Add an extra page of padding at the top of the stack for the guard page. */ | 22 | /* Add an extra page of padding at the top of the stack for the guard page. */ |
| 23 | #define STACK_TOP (TASK_SIZE - PAGE_SIZE) | 23 | #define STACK_TOP (TASK_SIZE - PAGE_SIZE) |
| 24 | #define STACK_TOP_MAX STACK_TOP | 24 | #define STACK_TOP_MAX STACK_TOP |
| 25 | /* Maximum virtual space for stack */ | ||
| 26 | #define STACK_SIZE_MAX (1 << 28) /* 256 MB */ | ||
| 25 | 27 | ||
| 26 | /* This decides where the kernel will search for a free chunk of vm | 28 | /* This decides where the kernel will search for a free chunk of vm |
| 27 | * space during mmap's. | 29 | * space during mmap's. |
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index 198a86feb574..86522ef09d52 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h | |||
| @@ -55,6 +55,8 @@ | |||
| 55 | #define STACK_TOP TASK_SIZE | 55 | #define STACK_TOP TASK_SIZE |
| 56 | #define STACK_TOP_MAX DEFAULT_TASK_SIZE | 56 | #define STACK_TOP_MAX DEFAULT_TASK_SIZE |
| 57 | 57 | ||
| 58 | #define STACK_SIZE_MAX (1 << 30) /* 1 GB */ | ||
| 59 | |||
| 58 | #endif | 60 | #endif |
| 59 | 61 | ||
| 60 | #ifndef __ASSEMBLY__ | 62 | #ifndef __ASSEMBLY__ |
| @@ -657,10 +657,10 @@ int setup_arg_pages(struct linux_binprm *bprm, | |||
| 657 | unsigned long rlim_stack; | 657 | unsigned long rlim_stack; |
| 658 | 658 | ||
| 659 | #ifdef CONFIG_STACK_GROWSUP | 659 | #ifdef CONFIG_STACK_GROWSUP |
| 660 | /* Limit stack size to 1GB */ | 660 | /* Limit stack size */ |
| 661 | stack_base = rlimit_max(RLIMIT_STACK); | 661 | stack_base = rlimit_max(RLIMIT_STACK); |
| 662 | if (stack_base > (1 << 30)) | 662 | if (stack_base > STACK_SIZE_MAX) |
| 663 | stack_base = 1 << 30; | 663 | stack_base = STACK_SIZE_MAX; |
| 664 | 664 | ||
| 665 | /* Make sure we didn't let the argument array grow too large. */ | 665 | /* Make sure we didn't let the argument array grow too large. */ |
| 666 | if (vma->vm_end - vma->vm_start > stack_base) | 666 | if (vma->vm_end - vma->vm_start > stack_base) |
