Re: [PATCH] MIPS: Fix syscall_get_nr for the syscall exit tracing.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/03/2015 04:08 PM, Lars Persson wrote:
> Register 2 is alredy overwritten by the return value when
> syscall_trace_leave() is called.
> 
> Signed-off-by: Lars Persson <larper@xxxxxxxx>
> ---
>  arch/mips/include/asm/syscall.h     |    8 +-------
>  arch/mips/include/asm/thread_info.h |    1 +
>  arch/mips/kernel/ptrace.c           |    2 ++
>  3 files changed, 4 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/mips/include/asm/syscall.h b/arch/mips/include/asm/syscall.h
> index bb79637..6499d93 100644
> --- a/arch/mips/include/asm/syscall.h
> +++ b/arch/mips/include/asm/syscall.h
> @@ -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,
> diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h
> index 99eea59..e4440f9 100644
> --- a/arch/mips/include/asm/thread_info.h
> +++ b/arch/mips/include/asm/thread_info.h
> @@ -36,6 +36,7 @@ struct thread_info {
>  						 */
>  	struct restart_block	restart_block;
>  	struct pt_regs		*regs;
> +	long			syscall;	/* syscall number */
>  };
>  
>  /*
> diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
> index 9d1487d..5104528 100644
> --- a/arch/mips/kernel/ptrace.c
> +++ b/arch/mips/kernel/ptrace.c
> @@ -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;
>  
> 

Hi,

This is now in mainline but parts of it can apply to stable as well?
Would you be willing to send a backported version for the stable trees?
Thanks a lot

-- 
markos





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux