X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fkernel%2Fskas%2Fexec_user.c;h=d50633a709211a2f4069dace657062b77a8c4824;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=c9942b6fc79b595c6e2da94230e334bd71725dc3;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/arch/um/kernel/skas/exec_user.c b/arch/um/kernel/skas/exec_user.c index c9942b6fc..d50633a70 100644 --- a/arch/um/kernel/skas/exec_user.c +++ b/arch/um/kernel/skas/exec_user.c @@ -11,6 +11,7 @@ #include #include "user.h" #include "kern_util.h" +#include "user_util.h" #include "os.h" #include "time_user.h" @@ -26,7 +27,7 @@ static int user_thread_tramp(void *arg) int user_thread(unsigned long stack, int flags) { - int pid, status; + int pid, status, err; pid = clone(user_thread_tramp, (void *) stack_sp(stack), flags | CLONE_FILES | SIGCHLD, NULL); @@ -35,7 +36,8 @@ int user_thread(unsigned long stack, int flags) return(pid); } - if(waitpid(pid, &status, WUNTRACED) < 0){ + CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED)); + if(err < 0){ printk("user_thread - waitpid failed, errno = %d\n", errno); return(-errno); }