Revert: commit e3e89cc535223433a619d0969db3fa05cdd946b8 ("Mark ptrace_{traceme,attach,detach} static") --- b/include/linux/ptrace.h +++ a/include/linux/ptrace.h @@ -102,8 +102,11 @@ extern long arch_ptrace(struct task_struct *child, long request, unsigned long addr, unsigned long data); +extern int ptrace_traceme(void); extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); +extern int ptrace_attach(struct task_struct *tsk); +extern int ptrace_detach(struct task_struct *, unsigned int); extern void ptrace_disable(struct task_struct *); extern int ptrace_check_attach(struct task_struct *task, int kill); extern int ptrace_request(struct task_struct *child, long request, --- b/kernel/ptrace.c +++ a/kernel/ptrace.c @@ -163,7 +163,7 @@ return !err; } +int ptrace_attach(struct task_struct *task) -static int ptrace_attach(struct task_struct *task) { int retval; @@ -219,7 +219,7 @@ * Performs checks and sets PT_PTRACED. * Should be used by all ptrace implementations for PTRACE_TRACEME. */ +int ptrace_traceme(void) -static int ptrace_traceme(void) { int ret = -EPERM; @@ -293,7 +293,7 @@ return false; } +int ptrace_detach(struct task_struct *child, unsigned int data) -static int ptrace_detach(struct task_struct *child, unsigned int data) { bool dead = false;