X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=arch%2Fparisc%2Fkernel%2Fprocess.c;h=1f3aa8db02030a1509253b6d0d51d4910f522761;hb=4388eb11351660c7688a4756aa6da99bfb4bc129;hp=ad585fd7748e2c10123754537a3de7ba1788a20f;hpb=803094f480aa5b7dd5187a17e6e60ff24721c212;p=safe%2Fjmp%2Flinux-2.6 diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index ad585fd..1f3aa8d 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -46,14 +46,15 @@ #include #include #include +#include #include #include #include #include #include -#include #include +#include /* * The idle thread. There's no useful work to be @@ -155,7 +156,7 @@ void machine_power_off(void) * software. The user has to press the button himself. */ printk(KERN_EMERG "System shut down completed.\n" - KERN_EMERG "Please power this system off now."); + "Please power this system off now."); } void (*pm_power_off)(void) = machine_power_off; @@ -253,7 +254,7 @@ sys_vfork(struct pt_regs *regs) } int -copy_thread(int nr, unsigned long clone_flags, unsigned long usp, +copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long unused, /* in ia64 this is "user_stack_size" */ struct task_struct * p, struct pt_regs * pregs) { @@ -348,11 +349,6 @@ asmlinkage int sys_execve(struct pt_regs *regs) goto out; error = do_execve(filename, (char __user * __user *) regs->gr[25], (char __user * __user *) regs->gr[24], regs); - if (error == 0) { - task_lock(current); - current->ptrace &= ~PT_DTRACE; - task_unlock(current); - } putname(filename); out: @@ -390,3 +386,15 @@ get_wchan(struct task_struct *p) } while (count++ < 16); return 0; } + +#ifdef CONFIG_64BIT +void *dereference_function_descriptor(void *ptr) +{ + Elf64_Fdesc *desc = ptr; + void *p; + + if (!probe_kernel_address(&desc->addr, p)) + ptr = p; + return ptr; +} +#endif