SPARC: use helpers for rlimits
Make sure compiler won't do weird things with limits. E.g. fetching
them twice may return 2 different values after writable limits are
implemented.
I.e. either use rlimit helpers added in
3e10e716ab
or ACCESS_ONCE if not applicable.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
6df1c17699
Коммит
76704fb56c
|
@ -365,6 +365,7 @@ EXPORT_SYMBOL(get_fb_unmapped_area);
|
|||
void arch_pick_mmap_layout(struct mm_struct *mm)
|
||||
{
|
||||
unsigned long random_factor = 0UL;
|
||||
unsigned long gap;
|
||||
|
||||
if (current->flags & PF_RANDOMIZE) {
|
||||
random_factor = get_random_int();
|
||||
|
@ -379,9 +380,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
|
|||
* Fall back to the standard layout if the personality
|
||||
* bit is set, or if the expected stack growth is unlimited:
|
||||
*/
|
||||
gap = rlimit(RLIMIT_STACK);
|
||||
if (!test_thread_flag(TIF_32BIT) ||
|
||||
(current->personality & ADDR_COMPAT_LAYOUT) ||
|
||||
current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY ||
|
||||
gap == RLIM_INFINITY ||
|
||||
sysctl_legacy_va_layout) {
|
||||
mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
|
||||
mm->get_unmapped_area = arch_get_unmapped_area;
|
||||
|
@ -389,9 +391,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
|
|||
} else {
|
||||
/* We know it's 32-bit */
|
||||
unsigned long task_size = STACK_TOP32;
|
||||
unsigned long gap;
|
||||
|
||||
gap = current->signal->rlim[RLIMIT_STACK].rlim_cur;
|
||||
if (gap < 128 * 1024 * 1024)
|
||||
gap = 128 * 1024 * 1024;
|
||||
if (gap > (task_size / 6 * 5))
|
||||
|
|
Загрузка…
Ссылка в новой задаче