Commit:     87f76d3aafe5b5e0a1d6d857088a0263b35afa6b
Parent:     ae0af3e3462fdada42deba30479aba70c6cf8b72
Author:     bibo,mao <[EMAIL PROTECTED]>
AuthorDate: Tue Jan 30 11:02:19 2007 +0800
Committer:  Tony Luck <[EMAIL PROTECTED]>
CommitDate: Mon Feb 5 14:04:21 2007 -0800

    [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 <[EMAIL PROTECTED]>
 arch/ia64/kernel/ptrace.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index f1ec129..3f89187 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -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)
                if (thread_matches(p, addr)) {
                        child = p;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to