From: NIIBE Y. <gn...@m1...> - 2002-04-05 09:04:02
|
2002-04-05 NIIBE Yutaka <gn...@m1...> Bug fix for thread_info. * arch/sh/kernel/ptrace.c (get_stack_long): Use task->thread_info. (put_stack_long): Likewise. (sys_ptrace): Likewise. Index: arch/sh/kernel/ptrace.c =================================================================== RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/ptrace.c,v retrieving revision 1.4 diff -u -3 -p -r1.4 ptrace.c --- arch/sh/kernel/ptrace.c 22 Mar 2002 12:57:10 -0000 1.4 +++ arch/sh/kernel/ptrace.c 5 Apr 2002 08:57:40 -0000 @@ -39,7 +39,7 @@ static inline int get_stack_long(struct { unsigned char *stack; - stack = (unsigned char *)task + THREAD_SIZE - sizeof(struct pt_regs); + stack = (unsigned char *)task->thread_info + THREAD_SIZE - sizeof(struct pt_regs); stack += offset; return (*((int *)stack)); } @@ -52,7 +52,7 @@ static inline int put_stack_long(struct { unsigned char *stack; - stack = (unsigned char *)task + THREAD_SIZE - sizeof(struct pt_regs); + stack = (unsigned char *)task->thread_info + THREAD_SIZE - sizeof(struct pt_regs); stack += offset; *(unsigned long *) stack = data; return 0; @@ -316,7 +316,7 @@ asmlinkage int sys_ptrace(long request, /* Compute next pc. */ pc = get_stack_long(child, (long)&dummy->pc); - regs = (struct pt_regs *)((unsigned long)child + THREAD_SIZE - sizeof(struct pt_regs)); + regs = (struct pt_regs *)(THREAD_SIZE + (unsigned long)child->thread_info) - 1; if (access_process_vm(child, pc&~3, &tmp, sizeof(tmp), 0) != sizeof(tmp)) break; @@ -331,7 +331,7 @@ asmlinkage int sys_ptrace(long request, else insn = tmp >> 16; #endif - compute_next_pc (regs, insn, &nextpc1, &nextpc2); + compute_next_pc(regs, insn, &nextpc1, &nextpc2); if (nextpc1 & 0x80000000) break; |