]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
fscrypt: use sha256() instead of open coding
authorEric Biggers <ebiggers@google.com>
Thu, 17 Sep 2020 04:53:41 +0000 (21:53 -0700)
committerEric Biggers <ebiggers@google.com>
Tue, 22 Sep 2020 13:48:54 +0000 (06:48 -0700)
Now that there's a library function that calculates the SHA-256 digest
of a buffer in one step, use it instead of sha256_init() +
sha256_update() + sha256_final().

Link: https://lore.kernel.org/r/20200917045341.324996-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
fs/crypto/fname.c

index eb13408b50a7067ea6522f2616c1050fc50663a9..f47b581d8a94a8aed5e49fb5b02b9797866eacb6 100644 (file)
@@ -61,15 +61,6 @@ struct fscrypt_nokey_name {
  */
 #define FSCRYPT_NOKEY_NAME_MAX offsetofend(struct fscrypt_nokey_name, sha256)
 
-static void fscrypt_do_sha256(const u8 *data, unsigned int data_len, u8 *result)
-{
-       struct sha256_state sctx;
-
-       sha256_init(&sctx);
-       sha256_update(&sctx, data, data_len);
-       sha256_final(&sctx, result);
-}
-
 static inline bool fscrypt_is_dot_dotdot(const struct qstr *str)
 {
        if (str->len == 1 && str->name[0] == '.')
@@ -366,9 +357,9 @@ int fscrypt_fname_disk_to_usr(const struct inode *inode,
        } else {
                memcpy(nokey_name.bytes, iname->name, sizeof(nokey_name.bytes));
                /* Compute strong hash of remaining part of name. */
-               fscrypt_do_sha256(&iname->name[sizeof(nokey_name.bytes)],
-                                 iname->len - sizeof(nokey_name.bytes),
-                                 nokey_name.sha256);
+               sha256(&iname->name[sizeof(nokey_name.bytes)],
+                      iname->len - sizeof(nokey_name.bytes),
+                      nokey_name.sha256);
                size = FSCRYPT_NOKEY_NAME_MAX;
        }
        oname->len = base64_encode((const u8 *)&nokey_name, size, oname->name);
@@ -497,7 +488,7 @@ bool fscrypt_match_name(const struct fscrypt_name *fname,
 {
        const struct fscrypt_nokey_name *nokey_name =
                (const void *)fname->crypto_buf.name;
-       u8 sha256[SHA256_DIGEST_SIZE];
+       u8 digest[SHA256_DIGEST_SIZE];
 
        if (likely(fname->disk_name.name)) {
                if (de_name_len != fname->disk_name.len)
@@ -508,9 +499,9 @@ bool fscrypt_match_name(const struct fscrypt_name *fname,
                return false;
        if (memcmp(de_name, nokey_name->bytes, sizeof(nokey_name->bytes)))
                return false;
-       fscrypt_do_sha256(&de_name[sizeof(nokey_name->bytes)],
-                         de_name_len - sizeof(nokey_name->bytes), sha256);
-       return !memcmp(sha256, nokey_name->sha256, sizeof(sha256));
+       sha256(&de_name[sizeof(nokey_name->bytes)],
+              de_name_len - sizeof(nokey_name->bytes), digest);
+       return !memcmp(digest, nokey_name->sha256, sizeof(digest));
 }
 EXPORT_SYMBOL_GPL(fscrypt_match_name);