The ia64 function "thread_matches()" has no users since commit e868a55c2a8c ("[IA64] remove find_thread_for_addr()"). Remove it. This allows us to make ptrace_check_attach() static to kernel/ptrace.c, which is good since we'll need to change the semantics of it and fix up all the callers.
Unified · Split
| @@ -672,33 +672,6 @@ ptrace_attach_sync_user_rbs (struct task_struct *child) · 671 unmodified lines | ||
| 672 | 672 | read_unlock(&tasklist_lock); |
| 673 | 673 | } |
| 674 | 674 | |
| 675 | −static inline int | |
| 676 | −thread_matches (struct task_struct *thread, unsigned long addr) | |
| 677 | −{ | |
| 678 | − unsigned long thread_rbs_end; | |
| 679 | − struct pt_regs *thread_regs; | |
| 680 | − | |
| 681 | − if (ptrace_check_attach(thread, 0) < 0) | |
| 682 | − /* | |
| 683 | − * If the thread is not in an attachable state, we'll | |
| 684 | − * ignore it. The net effect is that if ADDR happens | |
| 685 | − * to overlap with the portion of the thread's | |
| 686 | − * register backing store that is currently residing | |
| 687 | − * on the thread's kernel stack, then ptrace() may end | |
| 688 | − * up accessing a stale value. But if the thread | |
| 689 | − * isn't stopped, that's a problem anyhow, so we're | |
| 690 | − * doing as well as we can... | |
| 691 | − */ | |
| 692 | − return 0; | |
| 693 | − | |
| 694 | − thread_regs = task_pt_regs(thread); | |
| 695 | − thread_rbs_end = ia64_get_user_rbs_end(thread, thread_regs, NULL); | |
| 696 | − if (!on_kernel_rbs(addr, thread_regs->ar_bspstore, thread_rbs_end)) | |
| 697 | − return 0; | |
| 698 | − | |
| 699 | − return 1; /* looks like we've got a winner */ | |
| 700 | −} | |
| 701 | − | |
| 702 | 675 | /* |
| 703 | 676 | * Write f32-f127 back to task->thread.fph if it has been modified. |
| 704 | 677 | */ |
| @@ -45,7 +45,6 @@ extern long arch_ptrace(struct task_struct *child, long request, · 44 unmodified lines | ||
| 45 | 45 | extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); |
| 46 | 46 | extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); |
| 47 | 47 | extern void ptrace_disable(struct task_struct *); |
| 48 | −extern int ptrace_check_attach(struct task_struct *task, bool ignore_state); | |
| 49 | 48 | extern int ptrace_request(struct task_struct *child, long request, |
| 50 | 49 | unsigned long addr, unsigned long data); |
| 51 | 50 | extern void ptrace_notify(int exit_code); |
| @@ -139,7 +139,7 @@ void __ptrace_unlink(struct task_struct *child) · 138 unmodified lines | ||
| 139 | 139 | * RETURNS: |
| 140 | 140 | * 0 on success, -ESRCH if %child is not ready. |
| 141 | 141 | */ |
| 142 | −int ptrace_check_attach(struct task_struct *child, bool ignore_state) | |
| 142 | +static int ptrace_check_attach(struct task_struct *child, bool ignore_state) | |
| 143 | 143 | { |
| 144 | 144 | int ret = -ESRCH; |
| 145 | 145 | |