| From 1cadbf8e88d9131170fd8e8a5ecdb0bf3af3a2f1 Mon Sep 17 00:00:00 2001 |
| From: Andy Lutomirski <luto@kernel.org> |
| Date: Wed, 3 Jul 2019 13:34:02 -0700 |
| Subject: [PATCH] x86/syscalls: Use the compat versions of rt_sigsuspend() and |
| rt_sigprocmask() |
| |
| commit a8d03c3f300eefff3b5c14798409e4b43e37dd9b upstream. |
| |
| I'm working on some code that detects at build time if there's a |
| COMPAT_SYSCALL_DEFINE() that is not referenced in the x86 syscall tables. |
| It catches three offenders: rt_sigsuspend(), rt_sigprocmask(), and |
| sendfile64(). |
| |
| For rt_sigsuspend() and rt_sigprocmask(), the only potential difference |
| between the native and compat versions is that the compat version converts |
| the sigset_t, but, on little endian architectures, the conversion is a |
| no-op. This is why they both currently work on x86. |
| |
| To make the code more consistent, and to make the upcoming patches work, |
| rewire x86 to use the compat vesions. |
| |
| sendfile64() is more complicated, and will be addressed separately. |
| |
| Signed-off-by: Andy Lutomirski <luto@kernel.org> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Link: https://lkml.kernel.org/r/51643ac3157b5921eae0e172a8a0b1d953e68ebb.1562185330.git.luto@kernel.org |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl |
| index ad968b7bac72..8e82e0270b24 100644 |
| --- a/arch/x86/entry/syscalls/syscall_32.tbl |
| +++ b/arch/x86/entry/syscalls/syscall_32.tbl |
| @@ -186,11 +186,11 @@ |
| 172 i386 prctl sys_prctl __ia32_sys_prctl |
| 173 i386 rt_sigreturn sys_rt_sigreturn sys32_rt_sigreturn |
| 174 i386 rt_sigaction sys_rt_sigaction __ia32_compat_sys_rt_sigaction |
| -175 i386 rt_sigprocmask sys_rt_sigprocmask __ia32_sys_rt_sigprocmask |
| +175 i386 rt_sigprocmask sys_rt_sigprocmask __ia32_compat_sys_rt_sigprocmask |
| 176 i386 rt_sigpending sys_rt_sigpending __ia32_compat_sys_rt_sigpending |
| 177 i386 rt_sigtimedwait sys_rt_sigtimedwait_time32 __ia32_compat_sys_rt_sigtimedwait_time32 |
| 178 i386 rt_sigqueueinfo sys_rt_sigqueueinfo __ia32_compat_sys_rt_sigqueueinfo |
| -179 i386 rt_sigsuspend sys_rt_sigsuspend __ia32_sys_rt_sigsuspend |
| +179 i386 rt_sigsuspend sys_rt_sigsuspend __ia32_compat_sys_rt_sigsuspend |
| 180 i386 pread64 sys_pread64 __ia32_compat_sys_x86_pread |
| 181 i386 pwrite64 sys_pwrite64 __ia32_compat_sys_x86_pwrite |
| 182 i386 chown sys_chown16 __ia32_sys_chown16 |
| -- |
| 2.7.4 |
| |