aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/seccomp.c
diff options
context:
space:
mode:
authorTycho Andersen <tycho@tycho.ws>2018-12-09 13:24:12 -0500
committerKees Cook <keescook@chromium.org>2018-12-11 19:28:41 -0500
commita5662e4d81c4d4b08140c625d0f3c50b15786252 (patch)
treed21aaa33543bb1c440fa264ba99c0feb36b3536d /kernel/seccomp.c
parentdb5113911abaa7eb20cf115d4339959c1aecea95 (diff)
seccomp: switch system call argument type to void *
The const qualifier causes problems for any code that wants to write to the third argument of the seccomp syscall, as we will do in a future patch in this series. The third argument to the seccomp syscall is documented as void *, so rather than just dropping the const, let's switch everything to use void * as well. I believe this is safe because of 1. the documentation above, 2. there's no real type information exported about syscalls anywhere besides the man pages. Signed-off-by: Tycho Andersen <tycho@tycho.ws> CC: Kees Cook <keescook@chromium.org> CC: Andy Lutomirski <luto@amacapital.net> CC: Oleg Nesterov <oleg@redhat.com> CC: Eric W. Biederman <ebiederm@xmission.com> CC: "Serge E. Hallyn" <serge@hallyn.com> Acked-by: Serge Hallyn <serge@hallyn.com> CC: Christian Brauner <christian@brauner.io> CC: Tyler Hicks <tyhicks@canonical.com> CC: Akihiro Suda <suda.akihiro@lab.ntt.co.jp> Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'kernel/seccomp.c')
-rw-r--r--kernel/seccomp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/seccomp.c b/kernel/seccomp.c
index 96afc32e041d..393e029f778a 100644
--- a/kernel/seccomp.c
+++ b/kernel/seccomp.c
@@ -924,7 +924,7 @@ static long seccomp_get_action_avail(const char __user *uaction)
924 924
925/* Common entry point for both prctl and syscall. */ 925/* Common entry point for both prctl and syscall. */
926static long do_seccomp(unsigned int op, unsigned int flags, 926static long do_seccomp(unsigned int op, unsigned int flags,
927 const char __user *uargs) 927 void __user *uargs)
928{ 928{
929 switch (op) { 929 switch (op) {
930 case SECCOMP_SET_MODE_STRICT: 930 case SECCOMP_SET_MODE_STRICT:
@@ -944,7 +944,7 @@ static long do_seccomp(unsigned int op, unsigned int flags,
944} 944}
945 945
946SYSCALL_DEFINE3(seccomp, unsigned int, op, unsigned int, flags, 946SYSCALL_DEFINE3(seccomp, unsigned int, op, unsigned int, flags,
947 const char __user *, uargs) 947 void __user *, uargs)
948{ 948{
949 return do_seccomp(op, flags, uargs); 949 return do_seccomp(op, flags, uargs);
950} 950}
@@ -956,10 +956,10 @@ SYSCALL_DEFINE3(seccomp, unsigned int, op, unsigned int, flags,
956 * 956 *
957 * Returns 0 on success or -EINVAL on failure. 957 * Returns 0 on success or -EINVAL on failure.
958 */ 958 */
959long prctl_set_seccomp(unsigned long seccomp_mode, char __user *filter) 959long prctl_set_seccomp(unsigned long seccomp_mode, void __user *filter)
960{ 960{
961 unsigned int op; 961 unsigned int op;
962 char __user *uargs; 962 void __user *uargs;
963 963
964 switch (seccomp_mode) { 964 switch (seccomp_mode) {
965 case SECCOMP_MODE_STRICT: 965 case SECCOMP_MODE_STRICT: