|
@@ -195,7 +195,7 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
|
|
|
* to work from.
|
|
|
*/
|
|
|
rlim = current->signal->rlim;
|
|
|
- if (size > rlim[RLIMIT_STACK].rlim_cur / 4) {
|
|
|
+ if (size > ACCESS_ONCE(rlim[RLIMIT_STACK].rlim_cur) / 4) {
|
|
|
put_page(page);
|
|
|
return NULL;
|
|
|
}
|
|
@@ -579,7 +579,7 @@ int setup_arg_pages(struct linux_binprm *bprm,
|
|
|
|
|
|
#ifdef CONFIG_STACK_GROWSUP
|
|
|
/* Limit stack size to 1GB */
|
|
|
- stack_base = current->signal->rlim[RLIMIT_STACK].rlim_max;
|
|
|
+ stack_base = rlimit_max(RLIMIT_STACK);
|
|
|
if (stack_base > (1 << 30))
|
|
|
stack_base = 1 << 30;
|
|
|
|
|
@@ -1535,7 +1535,7 @@ static int format_corename(char *corename, long signr)
|
|
|
/* core limit size */
|
|
|
case 'c':
|
|
|
rc = snprintf(out_ptr, out_end - out_ptr,
|
|
|
- "%lu", current->signal->rlim[RLIMIT_CORE].rlim_cur);
|
|
|
+ "%lu", rlimit(RLIMIT_CORE));
|
|
|
if (rc > out_end - out_ptr)
|
|
|
goto out;
|
|
|
out_ptr += rc;
|
|
@@ -1800,7 +1800,7 @@ void do_coredump(long signr, int exit_code, struct pt_regs *regs)
|
|
|
struct coredump_params cprm = {
|
|
|
.signr = signr,
|
|
|
.regs = regs,
|
|
|
- .limit = current->signal->rlim[RLIMIT_CORE].rlim_cur,
|
|
|
+ .limit = rlimit(RLIMIT_CORE),
|
|
|
};
|
|
|
|
|
|
audit_core_dumps(signr);
|