On Thu, 2006-11-16 at 17:42, bibo,mao wrote: > Tony, > please discard this patch. It can not fix completely. If ptrace > caller wants to access vforked child process's user rbs, there > will be problem. The patch is correct. If ptracer wants to access vforked child process's user rbs, find_thread_for_addr's first parameter, child, will points to the vforked task_struct instead of vforker's. > > thanks > bibo,mao > > bibo,mao wrote: > > hi, > > I encountered one problem when running ptrace test case, the > > situation is this: traced process's syscall parameter needs to > > be accessed, but for sys_clone system call with clone_flag > > (CLONE_VFORK | CLONE_VM | SIGCHLD) parameter. this syscall's > > parameter accessing result is wrong. > > The reason is that with clone_flag(CLONE_VFORK | CLONE_VM | SIGCHLD), > > cloned thread's mm point is the same, but tgid is different. > > without this patch find_thread_for_addr will return cloned thread, > > but not the thread which call sys_clone syscall. > > > > thanks > > bibo,mao > > > > --- 2.6.19-rc5.org/arch/ia64/kernel/ptrace.c 2006-11-16 16:23:31.000000000 +0800 > > +++ 2.6.19-rc5/arch/ia64/kernel/ptrace.c 2006-11-16 16:25:07.000000000 +0800 > > @@ -607,7 +607,7 @@ find_thread_for_addr (struct task_struct > > */ > > list_for_each_safe(this, next, ¤t->children) { > > p = list_entry(this, struct task_struct, sibling); > > - if (p->mm != mm) > > + if (p->tgid != child->tgid) > > continue; > > if (thread_matches(p, addr)) { > > child = p; > > - - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |