]> git.baikalelectronics.ru Git - kernel.git/commit
setup_arg_pages: diagnose excessive argument size
authorRoland McGrath <roland@redhat.com>
Wed, 8 Sep 2010 02:35:49 +0000 (19:35 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 10 Sep 2010 15:10:26 +0000 (08:10 -0700)
commit2c8137129063288c2118ef06e4c34de01387ba6f
treec6c11dd4fb1845ce1a7d5c048fba40a62d5d94de
parent2f5c6586a8642c9657571d2c7fc4eab471fc14d8
setup_arg_pages: diagnose excessive argument size

The CONFIG_STACK_GROWSDOWN variant of setup_arg_pages() does not
check the size of the argument/environment area on the stack.
When it is unworkably large, shift_arg_pages() hits its BUG_ON.
This is exploitable with a very large RLIMIT_STACK limit, to
create a crash pretty easily.

Check that the initial stack is not too large to make it possible
to map in any executable.  We're not checking that the actual
executable (or intepreter, for binfmt_elf) will fit.  So those
mappings might clobber part of the initial stack mapping.  But
that is just userland lossage that userland made happen, not a
kernel problem.

Signed-off-by: Roland McGrath <roland@redhat.com>
Reviewed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/exec.c