Commit 1a07e8ba authored by Jeff Dike's avatar Jeff Dike Committed by Linus Torvalds

[PATCH] uml: fix call to sys_clone

This patch changes the calling convention of clone on i386 to match that of
the host by leaving the fourth argument unused.
Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 74c81f8c
......@@ -44,17 +44,6 @@ long sys_fork(void)
return(ret);
}
long sys_clone(unsigned long clone_flags, unsigned long newsp,
int *parent_tid, int *child_tid)
{
long ret;
current->thread.forking = 1;
ret = do_fork(clone_flags, newsp, NULL, 0, parent_tid, child_tid);
current->thread.forking = 0;
return(ret);
}
long sys_vfork(void)
{
long ret;
......
......@@ -3,6 +3,7 @@
* Licensed under the GPL
*/
#include "linux/sched.h"
#include "asm/mman.h"
#include "asm/uaccess.h"
#include "asm/unistd.h"
......@@ -56,6 +57,27 @@ int old_select(struct sel_arg_struct *arg)
return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp);
}
/* The i386 version skips reading from %esi, the fourth argument. So we must do
* this, too.
*/
int sys_clone(unsigned long clone_flags, unsigned long newsp, int *parent_tid,
int unused, int *child_tid)
{
long ret;
/* XXX: normal arch do here this pass, and also pass the regs to
* do_fork, instead of NULL. Currently the arch-independent code
* ignores these values, while the UML code (actually it's
* copy_thread) does the right thing. But this should change,
probably. */
/*if (!newsp)
newsp = UPT_SP(current->thread.regs);*/
current->thread.forking = 1;
ret = do_fork(clone_flags, newsp, NULL, 0, parent_tid, child_tid);
current->thread.forking = 0;
return(ret);
}
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment