]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - security/keys/compat.c
Fix: compat_rw_copy_check_uvector() misuse in aio, readv, writev, and security keys
[karo-tx-linux.git] / security / keys / compat.c
index c92d42b021aa47c62dea181c6b90129d80ff7e53..d65fa7fa29ba1a53b1ef4fb6d76c7aeafb7da65a 100644 (file)
@@ -24,7 +24,7 @@
  *
  * If successful, 0 will be returned.
  */
-long compat_keyctl_instantiate_key_iov(
+static long compat_keyctl_instantiate_key_iov(
        key_serial_t id,
        const struct compat_iovec __user *_payload_iov,
        unsigned ioc,
@@ -33,19 +33,19 @@ long compat_keyctl_instantiate_key_iov(
        struct iovec iovstack[UIO_FASTIOV], *iov = iovstack;
        long ret;
 
-       if (_payload_iov == 0 || ioc == 0)
+       if (!_payload_iov || !ioc)
                goto no_payload;
 
        ret = compat_rw_copy_check_uvector(WRITE, _payload_iov, ioc,
                                           ARRAY_SIZE(iovstack),
                                           iovstack, &iov);
        if (ret < 0)
-               return ret;
+               goto err;
        if (ret == 0)
                goto no_payload_free;
 
        ret = keyctl_instantiate_key_common(id, iov, ioc, ret, ringid);
-
+err:
        if (iov != iovstack)
                kfree(iov);
        return ret;