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
Kirill Smelkov
linux
Commits
8b659a39
Commit
8b659a39
authored
May 19, 2011
by
Ralf Baechle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MIPS: Split do_syscall_trace into two functions.
Signed-off-by:
Ralf Baechle
<
ralf@linux-mips.org
>
parent
c19c20ac
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
43 additions
and
20 deletions
+43
-20
arch/mips/include/asm/ptrace.h
arch/mips/include/asm/ptrace.h
+2
-1
arch/mips/kernel/entry.S
arch/mips/kernel/entry.S
+2
-3
arch/mips/kernel/ptrace.c
arch/mips/kernel/ptrace.c
+35
-8
arch/mips/kernel/scall32-o32.S
arch/mips/kernel/scall32-o32.S
+1
-2
arch/mips/kernel/scall64-64.S
arch/mips/kernel/scall64-64.S
+1
-2
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-n32.S
+1
-2
arch/mips/kernel/scall64-o32.S
arch/mips/kernel/scall64-o32.S
+1
-2
No files found.
arch/mips/include/asm/ptrace.h
View file @
8b659a39
...
@@ -141,7 +141,8 @@ extern int ptrace_set_watch_regs(struct task_struct *child,
...
@@ -141,7 +141,8 @@ extern int ptrace_set_watch_regs(struct task_struct *child,
#define instruction_pointer(regs) ((regs)->cp0_epc)
#define instruction_pointer(regs) ((regs)->cp0_epc)
#define profile_pc(regs) instruction_pointer(regs)
#define profile_pc(regs) instruction_pointer(regs)
extern
asmlinkage
void
do_syscall_trace
(
struct
pt_regs
*
regs
,
int
entryexit
);
extern
asmlinkage
void
syscall_trace_enter
(
struct
pt_regs
*
regs
);
extern
asmlinkage
void
syscall_trace_leave
(
struct
pt_regs
*
regs
);
extern
NORET_TYPE
void
die
(
const
char
*
,
struct
pt_regs
*
)
ATTRIB_NORET
;
extern
NORET_TYPE
void
die
(
const
char
*
,
struct
pt_regs
*
)
ATTRIB_NORET
;
...
...
arch/mips/kernel/entry.S
View file @
8b659a39
...
@@ -170,11 +170,10 @@ syscall_exit_work:
...
@@ -170,11 +170,10 @@ syscall_exit_work:
li
t0
,
_TIF_WORK_SYSCALL_EXIT
li
t0
,
_TIF_WORK_SYSCALL_EXIT
and
t0
,
a2
#
a2
is
preloaded
with
TI_FLAGS
and
t0
,
a2
#
a2
is
preloaded
with
TI_FLAGS
beqz
t0
,
work_pending
#
trace
bit
set
?
beqz
t0
,
work_pending
#
trace
bit
set
?
local_irq_enable
#
could
let
do_syscall_trac
e
()
local_irq_enable
#
could
let
syscall_trace_leav
e
()
#
call
schedule
()
instead
#
call
schedule
()
instead
move
a0
,
sp
move
a0
,
sp
li
a1
,
1
jal
syscall_trace_leave
jal
do_syscall_trace
b
resume_userspace
b
resume_userspace
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT)
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT)
...
...
arch/mips/kernel/ptrace.c
View file @
8b659a39
...
@@ -533,15 +533,10 @@ static inline int audit_arch(void)
...
@@ -533,15 +533,10 @@ static inline int audit_arch(void)
* Notification of system call entry/exit
* Notification of system call entry/exit
* - triggered by current->work.syscall_trace
* - triggered by current->work.syscall_trace
*/
*/
asmlinkage
void
do_syscall_trace
(
struct
pt_regs
*
regs
,
int
entryexit
)
asmlinkage
void
syscall_trace_enter
(
struct
pt_regs
*
regs
)
{
{
/* do the secure computing check first */
/* do the secure computing check first */
if
(
!
entryexit
)
secure_computing
(
regs
->
regs
[
2
]);
secure_computing
(
regs
->
regs
[
2
]);
if
(
unlikely
(
current
->
audit_context
)
&&
entryexit
)
audit_syscall_exit
(
AUDITSC_RESULT
(
regs
->
regs
[
7
]),
-
regs
->
regs
[
2
]);
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
goto
out
;
goto
out
;
...
@@ -565,8 +560,40 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
...
@@ -565,8 +560,40 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
}
}
out:
out:
if
(
unlikely
(
current
->
audit_context
)
&&
!
entryexit
)
if
(
unlikely
(
current
->
audit_context
))
audit_syscall_entry
(
audit_arch
(),
regs
->
regs
[
2
],
audit_syscall_entry
(
audit_arch
(),
regs
->
regs
[
2
],
regs
->
regs
[
4
],
regs
->
regs
[
5
],
regs
->
regs
[
4
],
regs
->
regs
[
5
],
regs
->
regs
[
6
],
regs
->
regs
[
7
]);
regs
->
regs
[
6
],
regs
->
regs
[
7
]);
}
}
/*
* Notification of system call entry/exit
* - triggered by current->work.syscall_trace
*/
asmlinkage
void
syscall_trace_leave
(
struct
pt_regs
*
regs
)
{
if
(
unlikely
(
current
->
audit_context
))
audit_syscall_exit
(
AUDITSC_RESULT
(
regs
->
regs
[
7
]),
-
regs
->
regs
[
2
]);
if
(
!
(
current
->
ptrace
&
PT_PTRACED
))
return
;
if
(
!
test_thread_flag
(
TIF_SYSCALL_TRACE
))
return
;
/* The 0x80 provides a way for the tracing parent to distinguish
between a syscall stop and SIGTRAP delivery */
ptrace_notify
(
SIGTRAP
|
((
current
->
ptrace
&
PT_TRACESYSGOOD
)
?
0x80
:
0
));
/*
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the
* stopping signal is not SIGTRAP. -brl
*/
if
(
current
->
exit_code
)
{
send_sig
(
current
->
exit_code
,
current
,
1
);
current
->
exit_code
=
0
;
}
}
arch/mips/kernel/scall32-o32.S
View file @
8b659a39
...
@@ -88,8 +88,7 @@ syscall_trace_entry:
...
@@ -88,8 +88,7 @@ syscall_trace_entry:
SAVE_STATIC
SAVE_STATIC
move
s0
,
t2
move
s0
,
t2
move
a0
,
sp
move
a0
,
sp
li
a1
,
0
jal
syscall_trace_enter
jal
do_syscall_trace
move
t0
,
s0
move
t0
,
s0
RESTORE_STATIC
RESTORE_STATIC
...
...
arch/mips/kernel/scall64-64.S
View file @
8b659a39
...
@@ -91,8 +91,7 @@ syscall_trace_entry:
...
@@ -91,8 +91,7 @@ syscall_trace_entry:
SAVE_STATIC
SAVE_STATIC
move
s0
,
t2
move
s0
,
t2
move
a0
,
sp
move
a0
,
sp
li
a1
,
0
jal
syscall_trace_enter
jal
do_syscall_trace
move
t0
,
s0
move
t0
,
s0
RESTORE_STATIC
RESTORE_STATIC
...
...
arch/mips/kernel/scall64-n32.S
View file @
8b659a39
...
@@ -89,8 +89,7 @@ n32_syscall_trace_entry:
...
@@ -89,8 +89,7 @@ n32_syscall_trace_entry:
SAVE_STATIC
SAVE_STATIC
move
s0
,
t2
move
s0
,
t2
move
a0
,
sp
move
a0
,
sp
li
a1
,
0
jal
syscall_trace_enter
jal
do_syscall_trace
move
t0
,
s0
move
t0
,
s0
RESTORE_STATIC
RESTORE_STATIC
...
...
arch/mips/kernel/scall64-o32.S
View file @
8b659a39
...
@@ -123,8 +123,7 @@ trace_a_syscall:
...
@@ -123,8 +123,7 @@ trace_a_syscall:
move
s0
,
t2
#
Save
syscall
pointer
move
s0
,
t2
#
Save
syscall
pointer
move
a0
,
sp
move
a0
,
sp
li
a1
,
0
jal
syscall_trace_enter
jal
do_syscall_trace
move
t0
,
s0
move
t0
,
s0
RESTORE_STATIC
RESTORE_STATIC
...
...
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