diff --git a/process.c b/process.c index c24bfc66..30d1545b 100644 --- a/process.c +++ b/process.c @@ -451,6 +451,10 @@ struct tcb *tcp; struct tcb *tcpchild; if (exiting(tcp)) { +#ifdef SYS_rfork + if (tcp->scno == SYS_rfork && !(tcp->u_arg[0]&RFPROC)) + return 0; +#endif if (getrval2(tcp)) return 0; if (!followfork) diff --git a/syscall.c b/syscall.c index 5b04dc91..bb118693 100644 --- a/syscall.c +++ b/syscall.c @@ -621,6 +621,9 @@ struct tcb *tcp; #endif #ifdef SYS_rforkall case SYS_rforkall: +#endif +#ifdef SYS_rfork + case SYS_rfork: #endif internal_fork(tcp); break;