[IA64] find thread for user rbs address
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 vforked child process mm point is the same, but tgid is different. Without this patch find_thread_for_addr will return vforked process if vforked process is also stopped, but not the thread which calls vfork syscall. Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
@@ -607,7 +607,7 @@ find_thread_for_addr (struct task_struct *child, unsigned long addr)
|
|||||||
*/
|
*/
|
||||||
list_for_each_safe(this, next, ¤t->children) {
|
list_for_each_safe(this, next, ¤t->children) {
|
||||||
p = list_entry(this, struct task_struct, sibling);
|
p = list_entry(this, struct task_struct, sibling);
|
||||||
if (p->mm != mm)
|
if (p->tgid != child->tgid)
|
||||||
continue;
|
continue;
|
||||||
if (thread_matches(p, addr)) {
|
if (thread_matches(p, addr)) {
|
||||||
child = p;
|
child = p;
|
||||||
|
Reference in New Issue
Block a user