1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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;
|