security/keys: remove compat_keyctl_instantiate_key_iov
authorChristoph Hellwig <hch@lst.de>
Fri, 25 Sep 2020 04:51:46 +0000 (06:51 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 3 Oct 2020 04:02:16 +0000 (00:02 -0400)
Now that import_iovec handles compat iovecs, the native version of
keyctl_instantiate_key_iov can be used for the compat case as well.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
security/keys/compat.c
security/keys/internal.h
security/keys/keyctl.c

index 7ae531d..1545efd 100644 (file)
 #include <linux/slab.h>
 #include "internal.h"
 
-/*
- * Instantiate a key with the specified compatibility multipart payload and
- * link the key into the destination keyring if one is given.
- *
- * The caller must have the appropriate instantiation permit set for this to
- * work (see keyctl_assume_authority).  No other permissions are required.
- *
- * If successful, 0 will be returned.
- */
-static long compat_keyctl_instantiate_key_iov(
-       key_serial_t id,
-       const struct compat_iovec __user *_payload_iov,
-       unsigned ioc,
-       key_serial_t ringid)
-{
-       struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
-       struct iov_iter from;
-       long ret;
-
-       if (!_payload_iov)
-               ioc = 0;
-
-       ret = import_iovec(WRITE, (const struct iovec __user *)_payload_iov,
-                          ioc, ARRAY_SIZE(iovstack), &iov, &from);
-       if (ret < 0)
-               return ret;
-
-       ret = keyctl_instantiate_key_common(id, &from, ringid);
-       kfree(iov);
-       return ret;
-}
-
 /*
  * The key control system call, 32-bit compatibility version for 64-bit archs
  */
@@ -113,8 +81,8 @@ COMPAT_SYSCALL_DEFINE5(keyctl, u32, option,
                return keyctl_reject_key(arg2, arg3, arg4, arg5);
 
        case KEYCTL_INSTANTIATE_IOV:
-               return compat_keyctl_instantiate_key_iov(
-                       arg2, compat_ptr(arg3), arg4, arg5);
+               return keyctl_instantiate_key_iov(arg2, compat_ptr(arg3), arg4,
+                                                 arg5);
 
        case KEYCTL_INVALIDATE:
                return keyctl_invalidate_key(arg2);
index 338a526..9b9cf3b 100644 (file)
@@ -262,11 +262,6 @@ extern long keyctl_instantiate_key_iov(key_serial_t,
                                       const struct iovec __user *,
                                       unsigned, key_serial_t);
 extern long keyctl_invalidate_key(key_serial_t);
-
-struct iov_iter;
-extern long keyctl_instantiate_key_common(key_serial_t,
-                                         struct iov_iter *,
-                                         key_serial_t);
 extern long keyctl_restrict_keyring(key_serial_t id,
                                    const char __user *_type,
                                    const char __user *_restriction);
index 9febd37..e26bbcc 100644 (file)
@@ -1164,7 +1164,7 @@ static int keyctl_change_reqkey_auth(struct key *key)
  *
  * If successful, 0 will be returned.
  */
-long keyctl_instantiate_key_common(key_serial_t id,
+static long keyctl_instantiate_key_common(key_serial_t id,
                                   struct iov_iter *from,
                                   key_serial_t ringid)
 {