Revision 9aea5a65aa7a1af9a4236dfaeb0088f1624f9919 authored by Roland McGrath on 08 September 2010, 02:37:06 UTC, committed by Linus Torvalds on 10 September 2010, 15:10:26 UTC
An execve with a very large total of argument/environment strings
can take a really long time in the execve system call.  It runs
uninterruptibly to count and copy all the strings.  This change
makes it abort the exec quickly if sent a SIGKILL.

Note that this is the conservative change, to interrupt only for
SIGKILL, by using fatal_signal_pending().  It would be perfectly
correct semantics to let any signal interrupt the string-copying in
execve, i.e. use signal_pending() instead of fatal_signal_pending().
We'll save that change for later, since it could have user-visible
consequences, such as having a timer set too quickly make it so that
an execve can never complete, though it always happened to work before.

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>
1 parent 7993bc1
History
File Mode Size
Kconfig -rw-r--r-- 497 bytes
Makefile -rw-r--r-- 343 bytes
ast.c -rw-r--r-- 4.7 KB
ast.h -rw-r--r-- 874 bytes
config.c -rw-r--r-- 25.3 KB
config.h -rw-r--r-- 1.5 KB
debug_fs.c -rw-r--r-- 16.3 KB
dir.c -rw-r--r-- 10.0 KB
dir.h -rw-r--r-- 1.2 KB
dlm_internal.h -rw-r--r-- 16.5 KB
lock.c -rw-r--r-- 120.7 KB
lock.h -rw-r--r-- 2.5 KB
lockspace.c -rw-r--r-- 18.6 KB
lockspace.h -rw-r--r-- 1.0 KB
lowcomms.c -rw-r--r-- 37.2 KB
lowcomms.h -rw-r--r-- 1014 bytes
lvb_table.h -rw-r--r-- 687 bytes
main.c -rw-r--r-- 2.0 KB
member.c -rw-r--r-- 9.0 KB
member.h -rw-r--r-- 1.0 KB
memory.c -rw-r--r-- 2.0 KB
memory.h -rw-r--r-- 1.0 KB
midcomms.c -rw-r--r-- 3.7 KB
midcomms.h -rw-r--r-- 864 bytes
netlink.c -rw-r--r-- 2.9 KB
plock.c -rw-r--r-- 9.8 KB
rcom.c -rw-r--r-- 13.0 KB
rcom.h -rw-r--r-- 1.1 KB
recover.c -rw-r--r-- 18.9 KB
recover.h -rw-r--r-- 1.5 KB
recoverd.c -rw-r--r-- 7.3 KB
recoverd.h -rw-r--r-- 970 bytes
requestqueue.c -rw-r--r-- 5.3 KB
requestqueue.h -rw-r--r-- 882 bytes
user.c -rw-r--r-- 25.6 KB
user.h -rw-r--r-- 514 bytes
util.c -rw-r--r-- 4.5 KB
util.h -rw-r--r-- 805 bytes

back to top