mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-31 06:14:39 +01:00
MIPS: Fix syscall_get_nr for the syscall exit tracing.
Register 2 is alredy overwritten by the return value when syscall_trace_leave() is called. Signed-off-by: Lars Persson <[email protected]> Cc: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/9187/ Signed-off-by: Ralf Baechle <[email protected]>
This commit is contained in:
1 parent
26f7c4bd05
commit
c2d9f17757
3 files changed
+4
-7
No files matched your search
@@ -29,13 +29,7 @@
|
||||
static inline long syscall_get_nr(struct task_struct *task,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
/* O32 ABI syscall() - Either 64-bit with O32 or 32-bit */
|
||||
if ((config_enabled(CONFIG_32BIT) ||
|
||||
test_tsk_thread_flag(task, TIF_32BIT_REGS)) &&
|
||||
(regs->regs[2] == __NR_syscall))
|
||||
return regs->regs[4];
|
||||
else
|
||||
return regs->regs[2];
|
||||
return current_thread_info()->syscall;
|
||||
}
|
||||
|
||||
static inline unsigned long mips_get_syscall_arg(unsigned long *arg,
|
||||
|
||||
@@ -36,6 +36,7 @@ struct thread_info {
|
||||
*/
|
||||
struct restart_block restart_block;
|
||||
struct pt_regs *regs;
|
||||
long syscall; /* syscall number */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -770,6 +770,8 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
|
||||
long ret = 0;
|
||||
user_exit();
|
||||
|
||||
current_thread_info()->syscall = syscall;
|
||||
|
||||
if (secure_computing() == -1)
|
||||
return -1;
|
||||
|
||||
|
||||
Reference in new issue
Block a user