diff options
Diffstat (limited to 'arch/um/kernel/syscall.c')
| -rw-r--r-- | arch/um/kernel/syscall.c | 24 | 
1 files changed, 12 insertions, 12 deletions
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c index f958cb876ee..a4c6d8eee74 100644 --- a/arch/um/kernel/syscall.c +++ b/arch/um/kernel/syscall.c @@ -17,25 +17,25 @@  long sys_fork(void)  { -	long ret; - -	current->thread.forking = 1; -	ret = do_fork(SIGCHLD, UPT_SP(¤t->thread.regs.regs), +	return do_fork(SIGCHLD, UPT_SP(¤t->thread.regs.regs),  		      ¤t->thread.regs, 0, NULL, NULL); -	current->thread.forking = 0; -	return ret;  }  long sys_vfork(void)  { -	long ret; - -	current->thread.forking = 1; -	ret = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, +	return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,  		      UPT_SP(¤t->thread.regs.regs),  		      ¤t->thread.regs, 0, NULL, NULL); -	current->thread.forking = 0; -	return ret; +} + +long sys_clone(unsigned long clone_flags, unsigned long newsp, +	       void __user *parent_tid, void __user *child_tid) +{ +	if (!newsp) +		newsp = UPT_SP(¤t->thread.regs.regs); + +	return do_fork(clone_flags, newsp, ¤t->thread.regs, 0, parent_tid, +		      child_tid);  }  long old_mmap(unsigned long addr, unsigned long len,  |