All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Kerrisk <mtk-manpages@gmx.net>
To: Ollie Wild <aaw@google.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: execve manpage changes
Date: Wed, 05 Sep 2007 21:02:36 +0200	[thread overview]
Message-ID: <46DEFD4C.4030805@gmx.net> (raw)
In-Reply-To: <65dd6fd50708061746p2a460fe5p24f1068c36ef5c40@mail.gmail.com>

Hello Ollie,

Ollie Wild wrote:
> Michael,
> 
> Per our previous discussion, here are the updates to the execve(2)
> manpage resulting from the variable length argument support patch in
> linux-2.6.23-rc1.  The execve API is unmodified.  However, the
> following should be noted in the "Notes" section.
> 
> Prior to linux-2.6.23, the memory used to store the environment and
> argument list strings was limited to 32 (MAX_ARG_PAGES) pages.  On
> most architectures, the page size is 4kB, leading to a maximum size of
> 128kB.
> 
> In linux-2.6.23 and later, most architectures support a size limit
> derived from the current RLIMIT_STACK setting (see getrlimit(2)).  For
> these architectures, the total size is limited to 1/4 the allowed
> stack size, the limit per string is 32 pages (MAX_ARG_STRLEN), and the
> maximum number of strings is 0x7FFFFFFF.  Architectures with no memory
> management unit are excepted: they maintain the pre-2.6.23 limit.

Thanks.  For man-pages-2.66 I have added the following text to execve.2:

   Limits on size of arguments + environment
       Most Unix implementations impose some limit on the total size
       of the command-line argument (argv)  and  environment  (envp)
       strings  that may be passed to a new program.  POSIX.1 allows
       an implementation to advertise this limit using  the  ARG_MAX
       constant  (either  defined  in <limits.h> or available at run
       time using the call sysconf(_SC_ARG_MAX)).

       On Linux prior to kernel 2.6.23, the memory used to store the
       environment  and  argument  strings  was  limited to 32 pages
       (defined by the kernel constant MAX_ARG_PAGES).  On architec-
       tures  with  a  4-kB page size, this yields a maximum size of
       128 kB.

       On kernel 2.6.23 and later, most architectures support a size
       limit  derived from the soft RLIMIT_STACK resource limit (see
       getrlimit(2)).  For these architectures, the  total  size  is
       limited  to  1/4  of  the  allowed  stack size, the limit per
       string is 32 pages (the kernel constant MAX_ARG_STRLEN),  and
       the  maximum  number  of strings is 0x7FFFFFFF.  (This change
       allows programs to have a much larger argument  and/or  envi-
       ronment  list.   Imposing  the 1/4-limit ensures that the new
       program always has some stack space.)  Architectures with  no
       memory  management  unit  are  excepted:  they  maintain  the
       pre-2.6.23 limit.

Cheers,

Michael

-- 
Michael Kerrisk
maintainer of Linux man pages Sections 2, 3, 4, 5, and 7

Want to help with man page maintenance?  Grab the latest tarball at
http://www.kernel.org/pub/linux/docs/manpages/
read the HOWTOHELP file and grep the source files for 'FIXME'.


      parent reply	other threads:[~2007-09-05 19:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-07  0:38 execve manpage changes Ollie Wild
2007-08-07  0:46 ` Ollie Wild
2007-08-07 21:13   ` Michael Kerrisk
2007-09-05 19:02   ` Michael Kerrisk [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46DEFD4C.4030805@gmx.net \
    --to=mtk-manpages@gmx.net \
    --cc=aaw@google.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.