aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/scall64-n32.S
diff options
context:
space:
mode:
authorJames Hogan <james.hogan@imgtec.com>2017-05-31 16:19:48 +0100
committerRalf Baechle <ralf@linux-mips.org>2017-06-28 12:22:40 +0200
commit49955d84cd9ccdca5a16a495e448e1a06fad9e49 (patch)
tree6079d40979a3343c3d93e69e665e7f06176f8676 /arch/mips/kernel/scall64-n32.S
parentMIPS: Fix mips_atomic_set() retry condition (diff)
downloadlinux-dev-49955d84cd9ccdca5a16a495e448e1a06fad9e49.tar.xz
linux-dev-49955d84cd9ccdca5a16a495e448e1a06fad9e49.zip
MIPS: Save static registers before sysmips
The MIPS sysmips system call handler may return directly from the MIPS_ATOMIC_SET case (mips_atomic_set()) to syscall_exit. This path restores the static (callee saved) registers, however they won't have been saved on entry to the system call. Use the save_static_function() macro to create a __sys_sysmips wrapper function which saves the static registers before calling sys_sysmips, so that the correct static register state is restored by syscall_exit. Fixes: f1e39a4a616c ("MIPS: Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler") Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: linux-mips@linux-mips.org Cc: stable@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/16149/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/scall64-n32.S')
-rw-r--r--arch/mips/kernel/scall64-n32.S2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index 90bad2d1b2d3..cbf190ef9e8a 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -302,7 +302,7 @@ EXPORT(sysn32_call_table)
PTR compat_sys_sched_getaffinity
PTR sys_cacheflush
PTR sys_cachectl
- PTR sys_sysmips
+ PTR __sys_sysmips
PTR compat_sys_io_setup /* 6200 */
PTR sys_io_destroy
PTR compat_sys_io_getevents