Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87f76d3a authored by bibo,mao's avatar bibo,mao Committed by Tony Luck
Browse files

[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: default avatarTony Luck <tony.luck@intel.com>
parent ae0af3e3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -607,7 +607,7 @@ find_thread_for_addr (struct task_struct *child, unsigned long addr)
	 */
 	list_for_each_safe(this, next, &current->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;