patch-2.4.7 linux/arch/sparc/kernel/ptrace.c
Next file: linux/arch/sparc/kernel/rtrap.S
Previous file: linux/arch/sparc/kernel/irq.c
Back to the patch index
Back to the overall index
- Lines: 40
- Date:
Fri Jul 20 12:39:55 2001
- Orig file:
v2.4.6/linux/arch/sparc/kernel/ptrace.c
- Orig date:
Sun Mar 25 18:14:21 2001
diff -u --recursive --new-file v2.4.6/linux/arch/sparc/kernel/ptrace.c linux/arch/sparc/kernel/ptrace.c
@@ -320,38 +320,10 @@
|| (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
unsigned long flags;
- if(child == current) {
- /* Try this under SunOS/Solaris, bwa haha
- * You'll never be able to kill the process. ;-)
- */
+ if (ptrace_attach(child)) {
pt_error_return(regs, EPERM);
goto out_tsk;
}
- if((!child->dumpable ||
- (current->uid != child->euid) ||
- (current->uid != child->uid) ||
- (current->uid != child->suid) ||
- (current->gid != child->egid) ||
- (current->gid != child->sgid) ||
- (!cap_issubset(child->cap_permitted, current->cap_permitted)) ||
- (current->gid != child->gid)) && !capable(CAP_SYS_PTRACE)) {
- pt_error_return(regs, EPERM);
- goto out_tsk;
- }
- /* the same process cannot be attached many times */
- if (child->ptrace & PT_PTRACED) {
- pt_error_return(regs, EPERM);
- goto out_tsk;
- }
- child->ptrace |= PT_PTRACED;
- write_lock_irqsave(&tasklist_lock, flags);
- if(child->p_pptr != current) {
- REMOVE_LINKS(child);
- child->p_pptr = current;
- SET_LINKS(child);
- }
- write_unlock_irqrestore(&tasklist_lock, flags);
- send_sig(SIGSTOP, child, 1);
pt_succ_return(regs, 0);
goto out_tsk;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)