linux-uconsole/include
Oleg Nesterov 35cc70fc58 exec: make argv/envp memory visible to oom-killer
commit 3c77f84572 upstream.

Brad Spengler published a local memory-allocation DoS that
evades the OOM-killer (though not the virtual memory RLIMIT):
http://www.grsecurity.net/~spender/64bit_dos.c

execve()->copy_strings() can allocate a lot of memory, but
this is not visible to oom-killer, nobody can see the nascent
bprm->mm and take it into account.

With this patch get_arg_page() increments current's MM_ANONPAGES
counter every time we allocate the new page for argv/envp. When
do_execve() succeds or fails, we change this counter back.

Technically this is not 100% correct, we can't know if the new
page is swapped out and turn MM_ANONPAGES into MM_SWAPENTS, but
I don't think this really matters and everything becomes correct
once exec changes ->mm or fails.

Reported-by: Brad Spengler <spender@grsecurity.net>
Reviewed-and-discussed-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-12-09 13:32:57 -08:00
..
acpi ACPI: Fix typos 2010-09-28 21:38:19 -04:00
asm-generic gpio: doc updates 2010-09-09 18:57:24 -07:00
crypto
drm drm/ttm: Fix two race conditions + fix busy codepaths 2010-10-06 09:04:43 +10:00
keys
linux exec: make argv/envp memory visible to oom-killer 2010-12-09 13:32:57 -08:00
math-emu
media V4L/DVB: videobuf-dma-sg: set correct size in last sg element 2010-09-27 22:22:01 -03:00
mtd mtd: Update copyright notices 2010-08-08 20:58:20 +01:00
net mac80211: clear txflags for ps-filtered frames 2010-12-09 13:32:12 -08:00
pcmcia
rdma
rxrpc
scsi scsi: use __uX types for headers exported to user space 2010-08-11 08:59:01 -07:00
sound ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter) 2010-08-18 15:10:59 +02:00
trace Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-24 12:21:49 -07:00
video include: replace unifdef-y with header-y 2010-08-14 22:26:51 +02:00
xen xen: pvhvm: make it clearer that XEN_UNPLUG_* define bits in a bitfield 2010-08-23 12:01:35 +01:00
Kbuild