Commit 5d47b394 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Al Viro
Browse files

security/keys: remove compat_keyctl_instantiate_key_iov



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: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c3973b40
Loading
Loading
Loading
Loading
+2 −34
Original line number Diff line number Diff line
@@ -11,38 +11,6 @@
#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);
+0 −5
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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)
{