|
|
Message-ID: <20200510211738.GA52708@sol.localdomain>
Date: Sun, 10 May 2020 14:17:38 -0700
From: Eric Biggers <ebiggers@...nel.org>
To: "Jason A. Donenfeld" <Jason@...c4.com>
Cc: dhowells@...hat.com, keyrings@...r.kernel.org,
Andy Lutomirski <luto@...nel.org>,
Greg KH <gregkh@...uxfoundation.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
kernel-hardening@...ts.openwall.com
Subject: Re: [PATCH v2] security/keys: rewrite big_key crypto to use Zinc
On Fri, May 01, 2020 at 06:19:42PM -0600, Jason A. Donenfeld wrote:
> A while back, I noticed that the crypto and crypto API usage in big_keys
> were entirely broken in multiple ways, so I rewrote it. Now, I'm
> rewriting it again, but this time using Zinc's ChaCha20Poly1305
> function. This makes the file considerably more simple; the diffstat
> alone should justify this commit. It also should be faster, since it no
> longer requires a mutex around the "aead api object" (nor allocations),
> allowing us to encrypt multiple items in parallel. We also benefit from
> being able to pass any type of pointer, so we can get rid of the
> ridiculously complex custom page allocator that big_key really doesn't
> need.
>
> Cc: David Howells <dhowells@...hat.com>
> Cc: Andy Lutomirski <luto@...nel.org>
> Cc: Greg KH <gregkh@...uxfoundation.org>
> Cc: Linus Torvalds <torvalds@...ux-foundation.org>
> Cc: Eric Biggers <ebiggers@...nel.org>
> Cc: kernel-hardening@...ts.openwall.com
> Signed-off-by: Jason A. Donenfeld <Jason@...c4.com>
You can add:
Reviewed-by: Eric Biggers <ebiggers@...gle.com>
But, a couple minor suggestions:
The commit message should say "lib/crypto", not Zinc. Nothing in the source
tree actually says Zinc, so it will confuse people who haven't read all the
previous discussions.
> /* read file to kernel and decrypt */
> - ret = kernel_read(file, buf->virt, enclen, &pos);
> + ret = kernel_read(file, buf, enclen, &pos);
> if (ret >= 0 && ret != enclen) {
> ret = -EIO;
> goto err_fput;
> + } else if (ret < 0) {
> + goto err_fput;
> }
It would make sense to write this as the following, to make it consistent with
how the return value of kernel_write() is checked in big_key_preparse():
ret = kernel_read(file, buf, enclen, &pos);
if (ret != enclen) {
if (ret >= 0)
ret = -ENOMEM;
goto err_fput;
}
- Eric
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.