Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
e3e8889d
Commit
e3e8889d
authored
Oct 29, 2002
by
Daniel Jacobowitz
Browse files
Options
Browse Files
Download
Plain Diff
Merge nevyn.them.org:/nevyn/big/kernel/linux-2.5
into nevyn.them.org:/nevyn/big/kernel/test/linux-2.5-trace1
parents
159ecf44
c7c1b99b
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
100 additions
and
165 deletions
+100
-165
arch/alpha/kernel/ptrace.c
arch/alpha/kernel/ptrace.c
+3
-2
arch/arm/kernel/ptrace.c
arch/arm/kernel/ptrace.c
+1
-9
arch/cris/kernel/ptrace.c
arch/cris/kernel/ptrace.c
+3
-5
arch/i386/kernel/ptrace.c
arch/i386/kernel/ptrace.c
+1
-10
arch/ia64/ia32/sys_ia32.c
arch/ia64/ia32/sys_ia32.c
+1
-1
arch/ia64/kernel/ptrace.c
arch/ia64/kernel/ptrace.c
+1
-9
arch/m68k/kernel/ptrace.c
arch/m68k/kernel/ptrace.c
+3
-2
arch/mips/kernel/ptrace.c
arch/mips/kernel/ptrace.c
+1
-9
arch/mips64/kernel/ptrace.c
arch/mips64/kernel/ptrace.c
+2
-20
arch/parisc/kernel/ptrace.c
arch/parisc/kernel/ptrace.c
+3
-2
arch/ppc/kernel/ptrace.c
arch/ppc/kernel/ptrace.c
+3
-2
arch/ppc64/kernel/ptrace.c
arch/ppc64/kernel/ptrace.c
+3
-2
arch/ppc64/kernel/ptrace32.c
arch/ppc64/kernel/ptrace32.c
+1
-1
arch/s390/kernel/ptrace.c
arch/s390/kernel/ptrace.c
+1
-8
arch/s390x/kernel/ptrace.c
arch/s390x/kernel/ptrace.c
+3
-9
arch/sh/kernel/ptrace.c
arch/sh/kernel/ptrace.c
+1
-10
arch/sparc/kernel/ptrace.c
arch/sparc/kernel/ptrace.c
+9
-3
arch/sparc64/kernel/ptrace.c
arch/sparc64/kernel/ptrace.c
+9
-3
arch/x86_64/ia32/ptrace32.c
arch/x86_64/ia32/ptrace32.c
+2
-12
arch/x86_64/kernel/ptrace.c
arch/x86_64/kernel/ptrace.c
+1
-10
include/asm-arm/ptrace.h
include/asm-arm/ptrace.h
+1
-4
include/asm-i386/ptrace.h
include/asm-i386/ptrace.h
+1
-4
include/asm-ia64/ptrace.h
include/asm-ia64/ptrace.h
+1
-4
include/asm-mips/ptrace.h
include/asm-mips/ptrace.h
+1
-4
include/asm-mips64/ptrace.h
include/asm-mips64/ptrace.h
+1
-4
include/asm-s390/ptrace.h
include/asm-s390/ptrace.h
+1
-4
include/asm-s390x/ptrace.h
include/asm-s390x/ptrace.h
+1
-4
include/asm-sh/ptrace.h
include/asm-sh/ptrace.h
+1
-4
include/asm-x86_64/ptrace.h
include/asm-x86_64/ptrace.h
+1
-4
include/linux/ptrace.h
include/linux/ptrace.h
+7
-0
kernel/ptrace.c
kernel/ptrace.c
+32
-0
No files found.
arch/alpha/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -383,7 +383,7 @@ sys_ptrace(long request, long pid, long addr, long data,
goto
out
;
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
goto
out
;
}
out:
...
...
@@ -400,7 +400,8 @@ syscall_trace(void)
return
;
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/arm/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -692,16 +692,8 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
ret
=
ptrace_setfpregs
(
child
,
(
void
*
)
data
);
break
;
case
PTRACE_SETOPTIONS
:
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
...
...
arch/cris/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -292,7 +292,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
@@ -307,10 +307,8 @@ asmlinkage void syscall_trace(void)
if
((
current
->
ptrace
&
(
PT_PTRACED
|
PT_TRACESYS
))
!=
(
PT_PTRACED
|
PT_TRACESYS
))
return
;
/* TODO: make a way to distinguish between a syscall stop and SIGTRAP
* delivery like in the i386 port ?
*/
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/i386/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -416,17 +416,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
break
;
}
case
PTRACE_SETOPTIONS
:
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
arch/ia64/ia32/sys_ia32.c
View file @
e3e8889d
...
...
@@ -3076,7 +3076,7 @@ sys32_ptrace (int request, pid_t pid, unsigned int addr, unsigned int data,
break
;
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
...
...
arch/ia64/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -1268,16 +1268,8 @@ sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data,
ret
=
ptrace_setregs
(
child
,
(
struct
pt_all_user_regs
*
)
data
);
goto
out_tsk
;
case
PTRACE_SETOPTIONS
:
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
goto
out_tsk
;
}
out_tsk:
...
...
arch/m68k/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -355,7 +355,7 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
@@ -370,7 +370,8 @@ asmlinkage void syscall_trace(void)
if
(
!
current
->
thread
.
work
.
delayed_trace
&&
!
current
->
thread
.
work
.
syscall_trace
)
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/mips/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -304,16 +304,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
res
=
ptrace_detach
(
child
,
data
);
break
;
case
PTRACE_SETOPTIONS
:
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
res
=
0
;
break
;
default:
res
=
-
EIO
;
res
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
goto
out
;
}
out_tsk:
...
...
arch/mips64/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -275,17 +275,8 @@ asmlinkage int sys32_ptrace(int request, int pid, int addr, int data)
ret
=
ptrace_detach
(
child
,
data
);
break
;
case
PTRACE_SETOPTIONS
:
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
...
...
@@ -535,17 +526,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
ret
=
ptrace_detach
(
child
,
data
);
break
;
case
PTRACE_SETOPTIONS
:
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
...
...
arch/parisc/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -244,7 +244,7 @@ long sys_ptrace(long request, pid_t pid, long addr, long data)
goto
out_tsk
;
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
goto
out_tsk
;
}
...
...
@@ -269,7 +269,8 @@ void syscall_trace(void)
if
((
current
->
ptrace
&
(
PT_PTRACED
|
PT_TRACESYS
))
!=
(
PT_PTRACED
|
PT_TRACESYS
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/ppc/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -339,7 +339,7 @@ int sys_ptrace(long request, long pid, long addr, long data)
#endif
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
@@ -354,7 +354,8 @@ void do_syscall_trace(void)
if
(
!
test_thread_flag
(
TIF_SYSCALL_TRACE
)
||
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/ppc64/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -276,7 +276,7 @@ int sys_ptrace(long request, long pid, long addr, long data)
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
@@ -292,7 +292,8 @@ void do_syscall_trace(void)
return
;
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/ppc64/kernel/ptrace32.c
View file @
e3e8889d
...
...
@@ -413,7 +413,7 @@ int sys32_ptrace(long request, long pid, unsigned long addr, unsigned long data)
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
arch/s390/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -307,15 +307,8 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
copied
+=
sizeof
(
unsigned
long
);
}
return
0
;
case
PTRACE_SETOPTIONS
:
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
return
0
;
}
return
-
EIO
;
return
ptrace_request
(
child
,
request
,
addr
,
data
)
;
}
asmlinkage
int
sys_ptrace
(
long
request
,
long
pid
,
long
addr
,
long
data
)
...
...
arch/s390x/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -261,7 +261,7 @@ do_ptrace_normal(struct task_struct *child, long request, long addr, long data)
}
return
0
;
}
return
-
EIO
;
return
ptrace_request
(
child
,
request
,
addr
,
data
)
;
}
#ifdef CONFIG_S390_SUPPORT
...
...
@@ -469,7 +469,7 @@ do_ptrace_emu31(struct task_struct *child, long request, long addr, long data)
}
return
0
;
}
return
-
EIO
;
return
ptrace_request
(
child
,
request
,
addr
,
data
)
;
}
#endif
...
...
@@ -538,12 +538,6 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
/* detach a process that was attached. */
return
ptrace_detach
(
child
,
data
);
case
PTRACE_SETOPTIONS
:
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
return
0
;
/* Do requests that differ for 31/64 bit */
default:
#ifdef CONFIG_S390_SUPPORT
...
...
@@ -551,8 +545,8 @@ do_ptrace(struct task_struct *child, long request, long addr, long data)
return
do_ptrace_emu31
(
child
,
request
,
addr
,
data
);
#endif
return
do_ptrace_normal
(
child
,
request
,
addr
,
data
);
}
/* Not reached. */
return
-
EIO
;
}
...
...
arch/sh/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -356,17 +356,8 @@ asmlinkage int sys_ptrace(long request, long pid, long addr, long data)
ret
=
ptrace_detach
(
child
,
data
);
break
;
case
PTRACE_SETOPTIONS
:
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
arch/sparc/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -584,10 +584,15 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
/* PTRACE_DUMPCORE unsupported... */
default:
pt_error_return
(
regs
,
EIO
);
default:
{
int
err
=
ptrace_request
(
child
,
request
,
addr
,
data
);
if
(
err
)
pt_error_return
(
regs
,
-
err
);
else
pt_succ_return
(
regs
,
0
);
goto
out_tsk
;
}
}
out_tsk:
if
(
child
)
put_task_struct
(
child
);
...
...
@@ -604,7 +609,8 @@ asmlinkage void syscall_trace(void)
return
;
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
current
->
thread
.
flags
^=
MAGIC_CONSTANT
;
notify_parent
(
current
,
SIGCHLD
);
...
...
arch/sparc64/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -571,10 +571,15 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
/* PTRACE_DUMPCORE unsupported... */
default:
pt_error_return
(
regs
,
EIO
);
default:
{
int
err
=
ptrace_request
(
child
,
request
,
addr
,
data
);
if
(
err
)
pt_error_return
(
regs
,
-
err
);
else
pt_succ_return
(
regs
,
0
);
goto
out_tsk
;
}
}
flush_and_out:
{
unsigned
long
va
;
...
...
@@ -612,7 +617,8 @@ asmlinkage void syscall_trace(void)
return
;
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
current
->
exit_code
=
SIGTRAP
;
current
->
exit_code
=
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
);
current
->
state
=
TASK_STOPPED
;
notify_parent
(
current
,
SIGCHLD
);
schedule
();
...
...
arch/x86_64/ia32/ptrace32.c
View file @
e3e8889d
...
...
@@ -185,17 +185,6 @@ asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data)
__u32
val
;
switch
(
request
)
{
case
PTRACE_TRACEME
:
case
PTRACE_ATTACH
:
case
PTRACE_SYSCALL
:
case
PTRACE_CONT
:
case
PTRACE_KILL
:
case
PTRACE_SINGLESTEP
:
case
PTRACE_DETACH
:
case
PTRACE_SETOPTIONS
:
ret
=
sys_ptrace
(
request
,
pid
,
addr
,
data
);
return
ret
;
case
PTRACE_PEEKTEXT
:
case
PTRACE_PEEKDATA
:
case
PTRACE_POKEDATA
:
...
...
@@ -211,7 +200,8 @@ asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data)
break
;
default:
return
-
EIO
;
ret
=
sys_ptrace
(
request
,
pid
,
addr
,
data
);
return
ret
;
}
child
=
find_target
(
request
,
pid
,
&
ret
);
...
...
arch/x86_64/kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -405,17 +405,8 @@ asmlinkage long sys_ptrace(long request, long pid, long addr, long data)
break
;
}
case
PTRACE_SETOPTIONS
:
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
ret
=
0
;
break
;
}
default:
ret
=
-
EIO
;
ret
=
ptrace_request
(
child
,
request
,
addr
,
data
)
;
break
;
}
out_tsk:
...
...
include/asm-arm/ptrace.h
View file @
e3e8889d
...
...
@@ -6,10 +6,7 @@
#define PTRACE_GETFPREGS 14
#define PTRACE_SETFPREGS 15
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#include <asm/proc/ptrace.h>
...
...
include/asm-i386/ptrace.h
View file @
e3e8889d
...
...
@@ -49,10 +49,7 @@ struct pt_regs {
#define PTRACE_GETFPXREGS 18
#define PTRACE_SETFPXREGS 19
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#ifdef __KERNEL__
#define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
...
...
include/asm-ia64/ptrace.h
View file @
e3e8889d
...
...
@@ -287,9 +287,6 @@ struct pt_all_user_regs {
#define PTRACE_GETREGS 18
/* get all registers (pt_all_user_regs) in one shot */
#define PTRACE_SETREGS 19
/* set all registers (pt_all_user_regs) in one shot */
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#endif
/* _ASM_IA64_PTRACE_H */
include/asm-mips/ptrace.h
View file @
e3e8889d
...
...
@@ -59,10 +59,7 @@ struct pt_regs {
/* #define PTRACE_GETFPXREGS 18 */
/* #define PTRACE_SETFPXREGS 19 */
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#ifdef _LANGUAGE_ASSEMBLY
#include <asm/offset.h>
...
...
include/asm-mips64/ptrace.h
View file @
e3e8889d
...
...
@@ -64,10 +64,7 @@ struct pt_regs {
/* #define PTRACE_GETFPXREGS 18 */
/* #define PTRACE_SETFPXREGS 19 */
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#ifdef _LANGUAGE_ASSEMBLY
#include <asm/offset.h>
...
...
include/asm-s390/ptrace.h
View file @
e3e8889d
...
...
@@ -105,10 +105,7 @@
#define STACK_FRAME_OVERHEAD 96
/* size of minimum stack frame */
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#ifndef __ASSEMBLY__
#include <linux/config.h>
...
...
include/asm-s390x/ptrace.h
View file @
e3e8889d
...
...
@@ -85,10 +85,7 @@
#define STACK_FRAME_OVERHEAD 160
/* size of minimum stack frame */
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
#ifndef __ASSEMBLY__
#include <linux/config.h>
...
...
include/asm-sh/ptrace.h
View file @
e3e8889d
...
...
@@ -44,10 +44,7 @@
#define REG_XDREG14 47
#define REG_FPSCR 48
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
/*
* This struct defines the way the registers are stored on the
...
...
include/asm-x86_64/ptrace.h
View file @
e3e8889d
...
...
@@ -32,10 +32,7 @@
/* top of stack page */
#define FRAME_SIZE 168
#define PTRACE_SETOPTIONS 21
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#define PTRACE_OLDSETOPTIONS 21
/* Dummy values for ptrace */
#define FS 1000
...
...
include/linux/ptrace.h
View file @
e3e8889d
...
...
@@ -23,6 +23,12 @@
#define PTRACE_SYSCALL 24
/* 0x4200-0x4300 are reserved for architecture-independent additions. */
#define PTRACE_SETOPTIONS 0x4200
/* options set using PTRACE_SETOPTIONS */
#define PTRACE_O_TRACESYSGOOD 0x00000001
#include <asm/ptrace.h>
#include <linux/sched.h>
...
...
@@ -32,6 +38,7 @@ 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
,
long
addr
,
long
data
);
extern
void
__ptrace_link
(
struct
task_struct
*
child
,
struct
task_struct
*
new_parent
);
extern
void
__ptrace_unlink
(
struct
task_struct
*
child
);
...
...
kernel/ptrace.c
View file @
e3e8889d
...
...
@@ -248,3 +248,35 @@ int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long dst, int
}
return
copied
;
}
int
ptrace_setoptions
(
struct
task_struct
*
child
,
long
data
)
{
if
(
data
&
PTRACE_O_TRACESYSGOOD
)
child
->
ptrace
|=
PT_TRACESYSGOOD
;
else
child
->
ptrace
&=
~
PT_TRACESYSGOOD
;
if
((
data
&
PTRACE_O_TRACESYSGOOD
)
!=
data
)
return
-
EINVAL
;
return
0
;
}
int
ptrace_request
(
struct
task_struct
*
child
,
long
request
,
long
addr
,
long
data
)
{
int
ret
=
-
EIO
;
switch
(
request
)
{
#ifdef PTRACE_OLDSETOPTIONS
case
PTRACE_OLDSETOPTIONS
:
#endif
case
PTRACE_SETOPTIONS
:
ret
=
ptrace_setoptions
(
child
,
data
);
break
;
default:
break
;
}
return
ret
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment