Commit e868a55c authored by Petr Tesarik's avatar Petr Tesarik Committed by Tony Luck

[IA64] remove find_thread_for_addr()

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: default avatarPetr Tesarik <ptesarik@suse.cz>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 08b23d74
...@@ -697,52 +697,6 @@ thread_matches (struct task_struct *thread, unsigned long addr) ...@@ -697,52 +697,6 @@ thread_matches (struct task_struct *thread, unsigned long addr)
return 1; /* looks like we've got a winner */ 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. * Write f32-f127 back to task->thread.fph if it has been modified.
*/ */
...@@ -1520,7 +1474,6 @@ asmlinkage long ...@@ -1520,7 +1474,6 @@ asmlinkage long
sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data) sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
{ {
struct pt_regs *pt; struct pt_regs *pt;
unsigned long peek_or_poke;
struct task_struct *child; struct task_struct *child;
struct switch_stack *sw; struct switch_stack *sw;
long ret; long ret;
...@@ -1532,19 +1485,12 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data) ...@@ -1532,19 +1485,12 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data)
goto out; goto out;
} }
peek_or_poke = (request == PTRACE_PEEKTEXT
|| request == PTRACE_PEEKDATA
|| request == PTRACE_POKETEXT
|| request == PTRACE_POKEDATA);
ret = -ESRCH; ret = -ESRCH;
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
{ {
child = find_task_by_pid(pid); child = find_task_by_pid(pid);
if (child) { if (child)
if (peek_or_poke)
child = find_thread_for_addr(child, addr);
get_task_struct(child); get_task_struct(child);
}
} }
read_unlock(&tasklist_lock); read_unlock(&tasklist_lock);
if (!child) if (!child)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment