Re: [RFC/PATCH] RLIMIT_ARG_MAX

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Michael Kerrisk <michael.kerrisk@...>
Cc: Peter Zijlstra <a.p.zijlstra@...>, aaw <aaw@...>, Andrew Morton <akpm@...>, <carlos@...>, Alan Cox <alan@...>, linux-kernel <linux-kernel@...>, <drepper@...>, <mtk.manpages@...>, Geoff Clare <gwc@...>
Date: Friday, February 29, 2008 - 5:57 pm

On Fri, 29 Feb 2008, Linus Torvalds wrote:

How about something like this?

The alternative is to just remove that size check entirely, and depend on 
get_user_pages() doing the stack limit check (among all the *other* checks 
it does when it does the acct_stack_growth() thing).

I'd almost prefer that simpler approach, but I don't have any really 
strong preferences. Anybody?

		Linus

---
 fs/exec.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/fs/exec.c b/fs/exec.c
index a44b142..e91f9cb 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -173,8 +173,15 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
 		return NULL;
 
 	if (write) {
-		struct rlimit *rlim = current->signal->rlim;
 		unsigned long size = bprm->vma->vm_end - bprm->vma->vm_start;
+		struct rlimit *rlim;
+
+		/*
+		 * We've historically supported up to 32 pages of argument
+		 * strings even with small stacks
+		 */
+		if (size <= 32*PAGE_SIZE)
+			return page;
 
 		/*
 		 * Limit to 1/4-th the stack size for the argv+env strings.
@@ -183,6 +190,7 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
 		 *  - the program will have a reasonable amount of stack left
 		 *    to work from.
 		 */
+		rlim = current->signal->rlim;
 		if (size > rlim[RLIMIT_STACK].rlim_cur / 4) {
 			put_page(page);
 			return NULL;
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC/PATCH] RLIMIT_ARG_MAX, Peter Zijlstra, (Wed Feb 27, 9:37 am)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 12:05 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Michael Kerrisk, (Fri Feb 29, 12:58 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Peter Zijlstra, (Fri Feb 29, 1:14 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 1:35 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Peter Zijlstra, (Fri Feb 29, 1:55 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Alan Cox, (Fri Feb 29, 2:40 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Michael Kerrisk, (Fri Feb 29, 2:18 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Geoff Clare, (Sat Mar 1, 4:42 am)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 2:39 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Michael Kerrisk, (Fri Feb 29, 3:49 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 4:07 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 5:57 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Carlos O'Donell, (Sat Mar 1, 10:21 am)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Michael Kerrisk, (Fri Feb 29, 4:43 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 5:34 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 2:14 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 1:12 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Peter Zijlstra, (Fri Feb 29, 1:18 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 1:29 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Pavel Machek, (Tue Mar 4, 4:07 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Peter Zijlstra, (Fri Feb 29, 1:42 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 2:12 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Ollie Wild, (Fri Feb 29, 3:01 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Jakub Jelinek, (Fri Feb 29, 3:09 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Linus Torvalds, (Fri Feb 29, 3:50 pm)
Re: [RFC/PATCH] RLIMIT_ARG_MAX, Ollie Wild, (Fri Feb 29, 4:03 pm)