Re: [PATCH 1/4] sh: Fix validation of system call number

From: John Paul Adrian Glaubitz
Date: Wed Jul 22 2020 - 19:19:54 EST


On 7/23/20 1:13 AM, Michael Karcher wrote:
> The slow path for traced system call entries accessed a wrong memory
> location to get the number of the maximum allowed system call number.
> Renumber the numbered "local" label for the correct location to avoid
> collisions with actual local labels.
>
> Signed-off-by: Michael Karcher <kernel@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
> ---
> arch/sh/kernel/entry-common.S | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S
> index 956a7a03b0c8..9bac5bbb67f3 100644
> --- a/arch/sh/kernel/entry-common.S
> +++ b/arch/sh/kernel/entry-common.S
> @@ -199,7 +199,7 @@ syscall_trace_entry:
> mov.l @(OFF_R7,r15), r7 ! arg3
> mov.l @(OFF_R3,r15), r3 ! syscall_nr
> !
> - mov.l 2f, r10 ! Number of syscalls
> + mov.l 6f, r10 ! Number of syscalls
> cmp/hs r10, r3
> bf syscall_call
> mov #-ENOSYS, r0
> @@ -353,7 +353,7 @@ ENTRY(system_call)
> tst r9, r8
> bf syscall_trace_entry
> !
> - mov.l 2f, r8 ! Number of syscalls
> + mov.l 6f, r8 ! Number of syscalls
> cmp/hs r8, r3
> bt syscall_badsys
> !
> @@ -392,7 +392,7 @@ syscall_exit:
> #if !defined(CONFIG_CPU_SH2)
> 1: .long TRA
> #endif
> -2: .long NR_syscalls
> +6: .long NR_syscalls
> 3: .long sys_call_table
> 7: .long do_syscall_trace_enter
> 8: .long do_syscall_trace_leave
>

Tested-by: John Paul Adrian Glaubitz <glaubitz@xxxxxxxxxxxxxxxxxxx>

--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@xxxxxxxxxx
`. `' Freie Universitaet Berlin - glaubitz@xxxxxxxxxxxxxxxxxxx
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913