[IA64] remove find_thread_for_addr()
authorPetr Tesarik <ptesarik@suse.cz>
Mon, 11 Feb 2008 21:42:34 +0000 (22:42 +0100)
committerTony Luck <tony.luck@intel.com>
Wed, 5 Mar 2008 23:48:16 +0000 (15:48 -0800)
find_thread_for_addr() is no longer needed.  It was only used to find
the correct kernel RBS for a given memory address, but since the kernel
RBS is not needed any longer, this function can go away.

Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/ptrace.c

index 54b7ea5515591c7331bc4a625b2b818c1f165566..e82fe296c2c0eaf8dc86eec50929fc38a91882f9 100644 (file)
@@ -697,52 +697,6 @@ thread_matches (struct task_struct *thread, unsigned long addr)
        return 1;       /* looks like we've got a winner */
 }
 
-/*
- * GDB apparently wants to be able to read the register-backing store
- * of any thread when attached to a given process.  If we are peeking
- * or poking an address that happens to reside in the kernel-backing
- * store of another thread, we need to attach to that thread, because
- * otherwise we end up accessing stale data.
- *
- * task_list_lock must be read-locked before calling this routine!
- */
-static struct task_struct *
-find_thread_for_addr (struct task_struct *child, unsigned long addr)
-{
-       struct task_struct *p;
-       struct mm_struct *mm;
-       struct list_head *this, *next;
-       int mm_users;
-
-       if (!(mm = get_task_mm(child)))
-               return child;
-
-       /* -1 because of our get_task_mm(): */
-       mm_users = atomic_read(&mm->mm_users) - 1;
-       if (mm_users <= 1)
-               goto out;               /* not multi-threaded */
-
-       /*
-        * Traverse the current process' children list.  Every task that
-        * one attaches to becomes a child.  And it is only attached children
-        * of the debugger that are of interest (ptrace_check_attach checks
-        * for this).
-        */
-       list_for_each_safe(this, next, &current->children) {
-               p = list_entry(this, struct task_struct, sibling);
-               if (p->tgid != child->tgid)
-                       continue;
-               if (thread_matches(p, addr)) {
-                       child = p;
-                       goto out;
-               }
-       }
-
-  out:
-       mmput(mm);
-       return child;
-}
-
 /*
  * Write f32-f127 back to task->thread.fph if it has been modified.
  */
@@ -1520,7 +1474,6 @@ asmlinkage long
 sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
 {
        struct pt_regs *pt;
-       unsigned long peek_or_poke;
        struct task_struct *child;
        struct switch_stack *sw;
        long ret;
@@ -1532,19 +1485,12 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
                goto out;
        }
 
-       peek_or_poke = (request == PTRACE_PEEKTEXT
-                       || request == PTRACE_PEEKDATA
-                       || request == PTRACE_POKETEXT
-                       || request == PTRACE_POKEDATA);
        ret = -ESRCH;
        read_lock(&tasklist_lock);
        {
                child = find_task_by_pid(pid);
-               if (child) {
-                       if (peek_or_poke)
-                               child = find_thread_for_addr(child, addr);
+               if (child)
                        get_task_struct(child);
-               }
        }
        read_unlock(&tasklist_lock);
        if (!child)