[PATCH] uml: make execvp safe for our usage
authorPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Sat, 25 Nov 2006 19:09:39 +0000 (11:09 -0800)
committerLinus Torvalds <torvalds@woody.osdl.org>
Sat, 25 Nov 2006 21:28:34 +0000 (13:28 -0800)
commit5d48545e5e88ab7a27ba6a5cb1e8fff617754b61
tree2da1a8d8e1ca4088cd91cc080f424b3e25e9423f
parent9dce447a542d8b4bedf13d6a4c4fc6737240372e
[PATCH] uml: make execvp safe for our usage

Reimplement execvp for our purposes - after we call fork() it is fundamentally
unsafe to use the kernel allocator - current is not valid there.  So we simply
pass to our modified execvp() a preallocated buffer.  This fixes a real bug
and works very well in testing (I've seen indirectly warning messages from the
forked thread - they went on the pipe connected to its stdout and where read
as a number by UML, when calling read_output().  I verified the obtained
number corresponded to "BUG:").

The added use of __cant_sleep() is not a new bug since __cant_sleep() is
already used in the same function - passing an atomicity parameter would be
better but it would require huge change, stating that this function must not
be called in atomic context and can sleep is a better idea (will make sure of
this gradually).

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Acked-by: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/um/include/os.h
arch/um/os-Linux/Makefile
arch/um/os-Linux/execvp.c [new file with mode: 0644]
arch/um/os-Linux/helper.c