aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2001-03-11 18:52:10 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2001-03-11 18:52:10 +0000
commit8f12c20f6c37989bd2d4e78f9763db606a64005b (patch)
tree6e67c3ea400b5990eb5ff04efebf8b424b8679af /sys
parent5d936aa181dd8b8a3d0a30cd1a41d1983719546e (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/i386/linux/linux_machdep.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/sys/i386/linux/linux_machdep.c b/sys/i386/linux/linux_machdep.c
index 6c1ddeeff80a..aaa5cac019dc 100644
--- a/sys/i386/linux/linux_machdep.c
+++ b/sys/i386/linux/linux_machdep.c
@@ -222,7 +222,6 @@ linux_clone(struct proc *p, struct linux_clone_args *args)
struct proc *p2;
int exit_signal;
vm_offset_t start;
- struct rfork_args rf_args;
#ifdef DEBUG
if (ldebug(clone)) {
@@ -256,14 +255,9 @@ linux_clone(struct proc *p, struct linux_clone_args *args)
error = 0;
start = 0;
- rf_args.flags = ff;
- if ((error = rfork(p, &rf_args)) != 0)
+ if ((error = fork1(p, ff, &p2)) != 0)
return (error);
- p2 = pfind(p->p_retval[0]);
- if (p2 == NULL)
- return (ESRCH);
-
PROC_LOCK(p2);
p2->p_sigparent = exit_signal;
PROC_UNLOCK(p2);
@@ -283,6 +277,8 @@ linux_clone(struct proc *p, struct linux_clone_args *args)
setrunqueue(p2);
mtx_unlock_spin(&sched_lock);
+ p->p_retval[0] = p2->p_pid;
+ p->p_retval[1] = 0;
return (0);
}