5d48545e5e
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> |
||
---|---|---|
.. | ||
skas | ||
sysdep-i386 | ||
sysdep-ia64 | ||
sysdep-ppc | ||
sysdep-x86_64 | ||
tt | ||
aio.h | ||
chan_kern.h | ||
chan_user.h | ||
choose-mode.h | ||
common-offsets.h | ||
elf_user.h | ||
frame_kern.h | ||
init.h | ||
initrd.h | ||
irq_kern.h | ||
irq_user.h | ||
kern.h | ||
kern_util.h | ||
line.h | ||
longjmp.h | ||
mconsole.h | ||
mconsole_kern.h | ||
mem.h | ||
mem_kern.h | ||
mem_user.h | ||
misc_constants.h | ||
mode.h | ||
mode_kern.h | ||
net_kern.h | ||
net_user.h | ||
os.h | ||
process.h | ||
ptrace_user.h | ||
registers.h | ||
sigcontext.h | ||
sigio.h | ||
signal_kern.h | ||
skas_ptrace.h | ||
skas_ptregs.h | ||
syscall.h | ||
sysrq.h | ||
task.h | ||
tempfile.h | ||
tlb.h | ||
ubd_user.h | ||
um_malloc.h | ||
um_mmu.h | ||
um_uaccess.h | ||
umid.h | ||
uml_uaccess.h | ||
user.h | ||
user_util.h |