| From 64ee8ca747e14737793e33d69b742b4cec106039 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 23 Jul 2020 01:13:19 +0200 |
| Subject: sh: Fix validation of system call number |
| |
| From: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de> |
| |
| [ Upstream commit 04a8a3d0a73f51c7c2da84f494db7ec1df230e69 ] |
| |
| 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@mkarcher.dialup.fu-berlin.de> |
| Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> |
| Fixes: f3a8308864f920d2 ("sh: Add a few missing irqflags tracing markers.") |
| Signed-off-by: Rich Felker <dalias@libc.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 28cc61216b649..ed5b758c650d7 100644 |
| --- a/arch/sh/kernel/entry-common.S |
| +++ b/arch/sh/kernel/entry-common.S |
| @@ -203,7 +203,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 |
| @@ -357,7 +357,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 |
| ! |
| @@ -396,7 +396,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 |
| -- |
| 2.25.1 |
| |