Commit afa86fc4 authored by Al Viro's avatar Al Viro

flagday: don't pass regs to copy_thread()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 135c37b8
...@@ -241,7 +241,7 @@ release_thread(struct task_struct *dead_task) ...@@ -241,7 +241,7 @@ release_thread(struct task_struct *dead_task)
int int
copy_thread(unsigned long clone_flags, unsigned long usp, copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg,
struct task_struct *p, struct pt_regs *wontuse) struct task_struct *p)
{ {
extern void ret_from_fork(void); extern void ret_from_fork(void);
extern void ret_from_kernel_thread(void); extern void ret_from_kernel_thread(void);
......
...@@ -376,7 +376,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); ...@@ -376,7 +376,7 @@ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
int int
copy_thread(unsigned long clone_flags, unsigned long stack_start, copy_thread(unsigned long clone_flags, unsigned long stack_start,
unsigned long stk_sz, struct task_struct *p, struct pt_regs *unused) unsigned long stk_sz, struct task_struct *p)
{ {
struct thread_info *thread = task_thread_info(p); struct thread_info *thread = task_thread_info(p);
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
......
...@@ -234,8 +234,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) ...@@ -234,8 +234,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
asmlinkage void ret_from_fork(void) asm("ret_from_fork"); asmlinkage void ret_from_fork(void) asm("ret_from_fork");
int copy_thread(unsigned long clone_flags, unsigned long stack_start, int copy_thread(unsigned long clone_flags, unsigned long stack_start,
unsigned long stk_sz, struct task_struct *p, unsigned long stk_sz, struct task_struct *p)
struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
unsigned long tls = p->thread.tp_value; unsigned long tls = p->thread.tp_value;
......
...@@ -299,7 +299,7 @@ asmlinkage void syscall_return(void); ...@@ -299,7 +299,7 @@ asmlinkage void syscall_return(void);
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg,
struct task_struct *p, struct pt_regs *unused) struct task_struct *p)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
......
...@@ -141,14 +141,14 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp) ...@@ -141,14 +141,14 @@ asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp)
int int
copy_thread(unsigned long clone_flags, copy_thread(unsigned long clone_flags,
unsigned long usp, unsigned long topstk, unsigned long usp, unsigned long topstk,
struct task_struct *p, struct pt_regs *regs) struct task_struct *p)
{ {
struct pt_regs *childregs; struct pt_regs *childregs;
unsigned long *v; unsigned long *v;
childregs = (struct pt_regs *) (task_stack_page(p) + THREAD_SIZE) - 1; childregs = (struct pt_regs *) (task_stack_page(p) + THREAD_SIZE) - 1;
v = ((unsigned long *)childregs) - 2; v = ((unsigned long *)childregs) - 2;
if (unlikely(!regs)) { if (unlikely(p->flags & PF_KTHREAD)) {
memset(childregs, 0, sizeof(struct pt_regs)); memset(childregs, 0, sizeof(struct pt_regs));
v[0] = usp; v[0] = usp;
v[1] = topstk; v[1] = topstk;
...@@ -157,7 +157,7 @@ copy_thread(unsigned long clone_flags, ...@@ -157,7 +157,7 @@ copy_thread(unsigned long clone_flags,
__asm__ __volatile__("%0 = syscfg;":"=da"(childregs->syscfg):); __asm__ __volatile__("%0 = syscfg;":"=da"(childregs->syscfg):);
p->thread.usp = 0; p->thread.usp = 0;
} else { } else {
*childregs = *regs; *childregs = *current_pt_regs();
childregs->r0 = 0; childregs->r0 = 0;
p->thread.usp = usp ? : rdusp(); p->thread.usp = usp ? : rdusp();
v[0] = v[1] = 0; v[0] = v[1] = 0;
......
...@@ -139,7 +139,7 @@ void start_thread(struct pt_regs *regs, unsigned int pc, unsigned long usp) ...@@ -139,7 +139,7 @@ void start_thread(struct pt_regs *regs, unsigned int pc, unsigned long usp)
*/ */
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long ustk_size, unsigned long ustk_size,
struct task_struct *p, struct pt_regs *unused) struct task_struct *p)
{ {
struct pt_regs *childregs; struct pt_regs *childregs;
......
...@@ -94,8 +94,7 @@ asmlinkage void ret_from_fork(void); ...@@ -94,8 +94,7 @@ asmlinkage void ret_from_fork(void);
asmlinkage void ret_from_kernel_thread(void); asmlinkage void ret_from_kernel_thread(void);
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
struct switch_stack *swstack = ((struct switch_stack *)childregs) - 1; struct switch_stack *swstack = ((struct switch_stack *)childregs) - 1;
......
...@@ -109,8 +109,7 @@ extern asmlinkage void ret_from_kernel_thread(void); ...@@ -109,8 +109,7 @@ extern asmlinkage void ret_from_kernel_thread(void);
int int
copy_thread(unsigned long clone_flags, unsigned long usp, copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
struct switch_stack *swstack = ((struct switch_stack *) childregs) - 1; struct switch_stack *swstack = ((struct switch_stack *) childregs) - 1;
......
...@@ -144,7 +144,7 @@ inline unsigned long user_stack(const struct pt_regs *regs) ...@@ -144,7 +144,7 @@ inline unsigned long user_stack(const struct pt_regs *regs)
*/ */
int copy_thread(unsigned long clone_flags, int copy_thread(unsigned long clone_flags,
unsigned long usp, unsigned long arg, unsigned long usp, unsigned long arg,
struct task_struct *p, struct pt_regs *unused) struct task_struct *p)
{ {
struct pt_regs *childregs; struct pt_regs *childregs;
......
...@@ -129,7 +129,7 @@ void flush_thread(void) ...@@ -129,7 +129,7 @@ void flush_thread(void)
int copy_thread(unsigned long clone_flags, int copy_thread(unsigned long clone_flags,
unsigned long usp, unsigned long topstk, unsigned long usp, unsigned long topstk,
struct task_struct * p, struct pt_regs *unused) struct task_struct * p)
{ {
struct pt_regs * childregs; struct pt_regs * childregs;
......
...@@ -87,8 +87,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk) ...@@ -87,8 +87,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk)
* Copy architecture-specific thread state * Copy architecture-specific thread state
*/ */
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, struct task_struct *p, unsigned long arg, struct task_struct *p)
struct pt_regs *unused)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct hexagon_switch_stack *ss; struct hexagon_switch_stack *ss;
......
...@@ -393,12 +393,13 @@ ia64_load_extra (struct task_struct *task) ...@@ -393,12 +393,13 @@ ia64_load_extra (struct task_struct *task)
int int
copy_thread(unsigned long clone_flags, copy_thread(unsigned long clone_flags,
unsigned long user_stack_base, unsigned long user_stack_size, unsigned long user_stack_base, unsigned long user_stack_size,
struct task_struct *p, struct pt_regs *regs) struct task_struct *p)
{ {
extern char ia64_ret_from_clone; extern char ia64_ret_from_clone;
struct switch_stack *child_stack, *stack; struct switch_stack *child_stack, *stack;
unsigned long rbs, child_rbs, rbs_size; unsigned long rbs, child_rbs, rbs_size;
struct pt_regs *child_ptregs; struct pt_regs *child_ptregs;
struct pt_regs *regs = current_pt_regs();
int retval = 0; int retval = 0;
child_ptregs = (struct pt_regs *) ((unsigned long) p + IA64_STK_OFFSET) - 1; child_ptregs = (struct pt_regs *) ((unsigned long) p + IA64_STK_OFFSET) - 1;
......
...@@ -192,7 +192,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu) ...@@ -192,7 +192,7 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpu)
} }
int copy_thread(unsigned long clone_flags, unsigned long spu, int copy_thread(unsigned long clone_flags, unsigned long spu,
unsigned long arg, struct task_struct *tsk, struct pt_regs *unused) unsigned long arg, struct task_struct *tsk)
{ {
struct pt_regs *childregs = task_pt_regs(tsk); struct pt_regs *childregs = task_pt_regs(tsk);
extern void ret_from_fork(void); extern void ret_from_fork(void);
......
...@@ -154,8 +154,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs) ...@@ -154,8 +154,7 @@ asmlinkage int m68k_clone(struct pt_regs *regs)
} }
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct * p, struct pt_regs * unused)
{ {
struct fork_frame { struct fork_frame {
struct switch_stack sw; struct switch_stack sw;
......
...@@ -120,8 +120,7 @@ void flush_thread(void) ...@@ -120,8 +120,7 @@ void flush_thread(void)
} }
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
......
...@@ -114,10 +114,10 @@ void flush_thread(void) ...@@ -114,10 +114,10 @@ void flush_thread(void)
} }
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, struct task_struct *p, struct pt_regs *regs) unsigned long arg, struct task_struct *p)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct pt_regs *childregs; struct pt_regs *childregs, *regs = current_pt_regs();
unsigned long childksp; unsigned long childksp;
p->set_child_tid = p->clear_child_tid = NULL; p->set_child_tid = p->clear_child_tid = NULL;
......
...@@ -206,7 +206,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) ...@@ -206,7 +206,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
*/ */
int copy_thread(unsigned long clone_flags, int copy_thread(unsigned long clone_flags,
unsigned long c_usp, unsigned long ustk_size, unsigned long c_usp, unsigned long ustk_size,
struct task_struct *p, struct pt_regs *unused) struct task_struct *p)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct pt_regs *c_regs; struct pt_regs *c_regs;
......
...@@ -142,7 +142,7 @@ extern asmlinkage void ret_from_fork(void); ...@@ -142,7 +142,7 @@ extern asmlinkage void ret_from_fork(void);
int int
copy_thread(unsigned long clone_flags, unsigned long usp, copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, struct task_struct *p, struct pt_regs *regs) unsigned long arg, struct task_struct *p)
{ {
struct pt_regs *userregs; struct pt_regs *userregs;
struct pt_regs *kregs; struct pt_regs *kregs;
......
...@@ -204,10 +204,9 @@ int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r) ...@@ -204,10 +204,9 @@ int dump_task_fpu (struct task_struct *tsk, elf_fpregset_t *r)
int int
copy_thread(unsigned long clone_flags, unsigned long usp, copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs * cregs = &(p->thread.regs); struct pt_regs *cregs = &(p->thread.regs);
void *stack = task_stack_page(p); void *stack = task_stack_page(p);
/* We have to use void * instead of a function pointer, because /* We have to use void * instead of a function pointer, because
......
...@@ -733,8 +733,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) ...@@ -733,8 +733,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
extern unsigned long dscr_default; /* defined in arch/powerpc/kernel/sysfs.c */ extern unsigned long dscr_default; /* defined in arch/powerpc/kernel/sysfs.c */
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, struct task_struct *p, unsigned long arg, struct task_struct *p)
struct pt_regs *regs)
{ {
struct pt_regs *childregs, *kregs; struct pt_regs *childregs, *kregs;
extern void ret_from_fork(void); extern void ret_from_fork(void);
...@@ -759,6 +758,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, ...@@ -759,6 +758,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
ti->flags |= _TIF_RESTOREALL; ti->flags |= _TIF_RESTOREALL;
f = ret_from_kernel_thread; f = ret_from_kernel_thread;
} else { } else {
struct pt_regs *regs = current_pt_regs();
CHECK_FULL_REGS(regs); CHECK_FULL_REGS(regs);
*childregs = *regs; *childregs = *regs;
if (usp) if (usp)
......
...@@ -117,8 +117,7 @@ void release_thread(struct task_struct *dead_task) ...@@ -117,8 +117,7 @@ void release_thread(struct task_struct *dead_task)
} }
int copy_thread(unsigned long clone_flags, unsigned long new_stackp, int copy_thread(unsigned long clone_flags, unsigned long new_stackp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct thread_info *ti; struct thread_info *ti;
struct fake_frame struct fake_frame
......
...@@ -87,11 +87,11 @@ void flush_thread(void) {} ...@@ -87,11 +87,11 @@ void flush_thread(void) {}
* set up the kernel stack and exception frames for a new process * set up the kernel stack and exception frames for a new process
*/ */
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *regs)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
struct pt_regs *regs = current_pt_regs();
p->thread.reg0 = (unsigned long) childregs; p->thread.reg0 = (unsigned long) childregs;
if (unlikely(p->flags & PF_KTHREAD)) { if (unlikely(p->flags & PF_KTHREAD)) {
......
...@@ -128,8 +128,7 @@ asmlinkage void ret_from_fork(void); ...@@ -128,8 +128,7 @@ asmlinkage void ret_from_fork(void);
asmlinkage void ret_from_kernel_thread(void); asmlinkage void ret_from_kernel_thread(void);
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct pt_regs *childregs; struct pt_regs *childregs;
......
...@@ -371,10 +371,9 @@ asmlinkage void ret_from_fork(void); ...@@ -371,10 +371,9 @@ asmlinkage void ret_from_fork(void);
asmlinkage void ret_from_kernel_thread(void); asmlinkage void ret_from_kernel_thread(void);
int copy_thread(unsigned long clone_flags, unsigned long usp, int copy_thread(unsigned long clone_flags, unsigned long usp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *regs)
{ {
struct pt_regs *childregs; struct pt_regs *childregs, *regs = current_pt_regs();
#ifdef CONFIG_SH_FPU #ifdef CONFIG_SH_FPU
/* can't happen for a kernel thread */ /* can't happen for a kernel thread */
......
...@@ -319,11 +319,10 @@ extern void ret_from_fork(void); ...@@ -319,11 +319,10 @@ extern void ret_from_fork(void);
extern void ret_from_kernel_thread(void); extern void ret_from_kernel_thread(void);
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *regs)
{ {
struct thread_info *ti = task_thread_info(p); struct thread_info *ti = task_thread_info(p);
struct pt_regs *childregs; struct pt_regs *childregs, *regs = current_pt_regs();
char *new_stack; char *new_stack;
#ifndef CONFIG_SMP #ifndef CONFIG_SMP
......
...@@ -622,10 +622,10 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags, ...@@ -622,10 +622,10 @@ asmlinkage long sparc_do_fork(unsigned long clone_flags,
* Child --> %o0 == parents pid, %o1 == 1 * Child --> %o0 == parents pid, %o1 == 1
*/ */
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *regs)
{ {
struct thread_info *t = task_thread_info(p); struct thread_info *t = task_thread_info(p);
struct pt_regs *regs = current_pt_regs();
struct sparc_stackf *parent_sf; struct sparc_stackf *parent_sf;
unsigned long child_stack_sz; unsigned long child_stack_sz;
char *child_trap_frame; char *child_trap_frame;
......
...@@ -157,10 +157,9 @@ void arch_release_thread_info(struct thread_info *info) ...@@ -157,10 +157,9 @@ void arch_release_thread_info(struct thread_info *info)
static void save_arch_state(struct thread_struct *t); static void save_arch_state(struct thread_struct *t);
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p), *regs = current_pt_regs();
unsigned long ksp; unsigned long ksp;
unsigned long *callee_regs; unsigned long *callee_regs;
......
...@@ -161,8 +161,7 @@ void fork_handler(void) ...@@ -161,8 +161,7 @@ void fork_handler(void)
} }
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, struct task_struct * p, unsigned long arg, struct task_struct * p)
struct pt_regs *regs)
{ {
void (*handler)(void); void (*handler)(void);
int kthread = current->flags & PF_KTHREAD; int kthread = current->flags & PF_KTHREAD;
......
...@@ -262,7 +262,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); ...@@ -262,7 +262,7 @@ asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
int int
copy_thread(unsigned long clone_flags, unsigned long stack_start, copy_thread(unsigned long clone_flags, unsigned long stack_start,
unsigned long stk_sz, struct task_struct *p, struct pt_regs *unused) unsigned long stk_sz, struct task_struct *p)
{ {
struct thread_info *thread = task_thread_info(p); struct thread_info *thread = task_thread_info(p);
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
......
...@@ -128,8 +128,7 @@ void release_thread(struct task_struct *dead_task) ...@@ -128,8 +128,7 @@ void release_thread(struct task_struct *dead_task)
} }
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
struct task_struct *tsk; struct task_struct *tsk;
......
...@@ -146,8 +146,7 @@ static inline u32 read_32bit_tls(struct task_struct *t, int tls) ...@@ -146,8 +146,7 @@ static inline u32 read_32bit_tls(struct task_struct *t, int tls)
} }
int copy_thread(unsigned long clone_flags, unsigned long sp, int copy_thread(unsigned long clone_flags, unsigned long sp,
unsigned long arg, unsigned long arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *regs)
{ {
int err; int err;
struct pt_regs *childregs; struct pt_regs *childregs;
......
...@@ -199,8 +199,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) ...@@ -199,8 +199,7 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
*/ */
int copy_thread(unsigned long clone_flags, unsigned long usp_thread_fn, int copy_thread(unsigned long clone_flags, unsigned long usp_thread_fn,
unsigned long thread_fn_arg, unsigned long thread_fn_arg, struct task_struct *p)
struct task_struct *p, struct pt_regs *unused)
{ {
struct pt_regs *childregs = task_pt_regs(p); struct pt_regs *childregs = task_pt_regs(p);
......
...@@ -2271,7 +2271,7 @@ extern void mm_release(struct task_struct *, struct mm_struct *); ...@@ -2271,7 +2271,7 @@ extern void mm_release(struct task_struct *, struct mm_struct *);
extern struct mm_struct *dup_mm(struct task_struct *tsk); extern struct mm_struct *dup_mm(struct task_struct *tsk);
extern int copy_thread(unsigned long, unsigned long, unsigned long, extern int copy_thread(unsigned long, unsigned long, unsigned long,
struct task_struct *, struct pt_regs *); struct task_struct *);
extern void flush_thread(void); extern void flush_thread(void);
extern void exit_thread(void); extern void exit_thread(void);
......
...@@ -1320,7 +1320,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, ...@@ -1320,7 +1320,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
retval = copy_io(clone_flags, p); retval = copy_io(clone_flags, p);
if (retval) if (retval)
goto bad_fork_cleanup_namespaces; goto bad_fork_cleanup_namespaces;
retval = copy_thread(clone_flags, stack_start, stack_size, p, regs); retval = copy_thread(clone_flags, stack_start, stack_size, p);
if (retval) if (retval)
goto bad_fork_cleanup_io; goto bad_fork_cleanup_io;
......
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