X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fs390%2Fkernel%2Fprocess.c;h=7aea25d6e3003744758cc62542b56e3a5a8ef2c8;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=5d56e77c74eee3ee086377599ff622d8bf40d394;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 5d56e77c7..7aea25d6e 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -159,11 +159,10 @@ void default_idle(void) #endif /* CONFIG_ARCH_S390X */ } -int cpu_idle(void) +void cpu_idle(void) { for (;;) default_idle(); - return 0; } void show_regs(struct pt_regs *regs) @@ -216,8 +215,7 @@ void exit_thread(void) void flush_thread(void) { - - current->used_math = 0; + clear_used_math(); clear_tsk_thread_flag(current, TIF_USEDFPU); } @@ -238,7 +236,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp, frame = ((struct fake_frame *) (THREAD_SIZE + (unsigned long) p->thread_info)) - 1; p->thread.ksp = (unsigned long) frame; - p->set_child_tid = p->clear_child_tid = NULL; /* Store access registers to kernel stack of new process. */ frame->childregs = *regs; frame->childregs.gprs[2] = 0; /* child returns 0 on fork. */ @@ -340,7 +337,9 @@ asmlinkage long sys_execve(struct pt_regs regs) error = do_execve(filename, (char __user * __user *) regs.gprs[3], (char __user * __user *) regs.gprs[4], ®s); if (error == 0) { + task_lock(current); current->ptrace &= ~PT_DTRACE; + task_unlock(current); current->thread.fp_regs.fpc = 0; if (MACHINE_HAS_IEEE) asm volatile("sfpc %0,%0" : : "d" (0));