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'.
prev 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.