* [PATCH] bcachefs: use sha256() instead of crypto_shash API
@ 2025-03-16 3:47 Eric Biggers
2025-03-16 17:41 ` Kent Overstreet
0 siblings, 1 reply; 2+ messages in thread
From: Eric Biggers @ 2025-03-16 3:47 UTC (permalink / raw)
To: linux-bcachefs
From: Eric Biggers <ebiggers@google.com>
Just use sha256() instead of the clunky crypto API. This is much
simpler.
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
fs/bcachefs/Kconfig | 2 +-
fs/bcachefs/bcachefs.h | 1 -
fs/bcachefs/checksum.c | 10 ----------
fs/bcachefs/str_hash.h | 8 ++------
fs/bcachefs/super.c | 1 -
5 files changed, 3 insertions(+), 19 deletions(-)
diff --git a/fs/bcachefs/Kconfig b/fs/bcachefs/Kconfig
index fc7efd0a7525e..c9798750202d3 100644
--- a/fs/bcachefs/Kconfig
+++ b/fs/bcachefs/Kconfig
@@ -14,11 +14,11 @@ config BCACHEFS_FS
select ZLIB_DEFLATE
select ZLIB_INFLATE
select ZSTD_COMPRESS
select ZSTD_DECOMPRESS
select CRYPTO
- select CRYPTO_SHA256
+ select CRYPTO_LIB_SHA256
select CRYPTO_CHACHA20
select CRYPTO_POLY1305
select KEYS
select RAID6_PQ
select XOR_BLOCKS
diff --git a/fs/bcachefs/bcachefs.h b/fs/bcachefs/bcachefs.h
index b432bb6e6f6e0..0ea593e813f43 100644
--- a/fs/bcachefs/bcachefs.h
+++ b/fs/bcachefs/bcachefs.h
@@ -977,11 +977,10 @@ struct bch_fs {
mempool_t compression_bounce[2];
mempool_t compress_workspace[BCH_COMPRESSION_OPT_NR];
size_t zstd_workspace_size;
- struct crypto_shash *sha256;
struct crypto_sync_skcipher *chacha20;
struct crypto_shash *poly1305;
atomic64_t key_version;
diff --git a/fs/bcachefs/checksum.c b/fs/bcachefs/checksum.c
index 23a383577d4c7..208e13e308084 100644
--- a/fs/bcachefs/checksum.c
+++ b/fs/bcachefs/checksum.c
@@ -786,28 +786,18 @@ void bch2_fs_encryption_exit(struct bch_fs *c)
{
if (c->poly1305)
crypto_free_shash(c->poly1305);
if (c->chacha20)
crypto_free_sync_skcipher(c->chacha20);
- if (c->sha256)
- crypto_free_shash(c->sha256);
}
int bch2_fs_encryption_init(struct bch_fs *c)
{
struct bch_sb_field_crypt *crypt;
struct bch_key key;
int ret = 0;
- c->sha256 = crypto_alloc_shash("sha256", 0, 0);
- ret = PTR_ERR_OR_ZERO(c->sha256);
- if (ret) {
- c->sha256 = NULL;
- bch_err(c, "error requesting sha256 module: %s", bch2_err_str(ret));
- goto out;
- }
-
crypt = bch2_sb_field_get(c->disk_sb.sb, crypt);
if (!crypt)
goto out;
ret = bch2_alloc_ciphers(c);
diff --git a/fs/bcachefs/str_hash.h b/fs/bcachefs/str_hash.h
index f645a4547b049..575ad1e039040 100644
--- a/fs/bcachefs/str_hash.h
+++ b/fs/bcachefs/str_hash.h
@@ -10,11 +10,10 @@
#include "siphash.h"
#include "subvolume.h"
#include "super.h"
#include <linux/crc32c.h>
-#include <crypto/hash.h>
#include <crypto/sha2.h>
static inline enum bch_str_hash_type
bch2_str_hash_opt_to_type(struct bch_fs *c, enum bch_str_hash_opts opt)
{
@@ -53,17 +52,14 @@ bch2_hash_info_init(struct bch_fs *c, const struct bch_inode_unpacked *bi)
#endif
.siphash_key = { .k0 = bi->bi_hash_seed }
};
if (unlikely(info.type == BCH_STR_HASH_siphash_old)) {
- SHASH_DESC_ON_STACK(desc, c->sha256);
u8 digest[SHA256_DIGEST_SIZE];
- desc->tfm = c->sha256;
-
- crypto_shash_digest(desc, (void *) &bi->bi_hash_seed,
- sizeof(bi->bi_hash_seed), digest);
+ sha256((const u8 *)&bi->bi_hash_seed,
+ sizeof(bi->bi_hash_seed), digest);
memcpy(&info.siphash_key, digest, sizeof(info.siphash_key));
}
return info;
}
diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c
index 6de3a5751561e..8e928b3d8ef4a 100644
--- a/fs/bcachefs/super.c
+++ b/fs/bcachefs/super.c
@@ -73,11 +73,10 @@
#include <crypto/hash.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Kent Overstreet <kent.overstreet@gmail.com>");
MODULE_DESCRIPTION("bcachefs filesystem");
-MODULE_SOFTDEP("pre: sha256");
MODULE_SOFTDEP("pre: chacha20");
MODULE_SOFTDEP("pre: poly1305");
MODULE_SOFTDEP("pre: xxhash");
const char * const bch2_fs_flag_strs[] = {
base-commit: da920b7df701770e006928053672147075587fb2
prerequisite-patch-id: 500a8dddbef9cb497eecaf59c0cb8fc7f2e4380e
--
2.49.0
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] bcachefs: use sha256() instead of crypto_shash API
2025-03-16 3:47 [PATCH] bcachefs: use sha256() instead of crypto_shash API Eric Biggers
@ 2025-03-16 17:41 ` Kent Overstreet
0 siblings, 0 replies; 2+ messages in thread
From: Kent Overstreet @ 2025-03-16 17:41 UTC (permalink / raw)
To: Eric Biggers; +Cc: linux-bcachefs
On Sat, Mar 15, 2025 at 08:47:17PM -0700, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> Just use sha256() instead of the clunky crypto API. This is much
> simpler.
>
> Signed-off-by: Eric Biggers <ebiggers@google.com>
Nice - applied.
> ---
> fs/bcachefs/Kconfig | 2 +-
> fs/bcachefs/bcachefs.h | 1 -
> fs/bcachefs/checksum.c | 10 ----------
> fs/bcachefs/str_hash.h | 8 ++------
> fs/bcachefs/super.c | 1 -
> 5 files changed, 3 insertions(+), 19 deletions(-)
>
> diff --git a/fs/bcachefs/Kconfig b/fs/bcachefs/Kconfig
> index fc7efd0a7525e..c9798750202d3 100644
> --- a/fs/bcachefs/Kconfig
> +++ b/fs/bcachefs/Kconfig
> @@ -14,11 +14,11 @@ config BCACHEFS_FS
> select ZLIB_DEFLATE
> select ZLIB_INFLATE
> select ZSTD_COMPRESS
> select ZSTD_DECOMPRESS
> select CRYPTO
> - select CRYPTO_SHA256
> + select CRYPTO_LIB_SHA256
> select CRYPTO_CHACHA20
> select CRYPTO_POLY1305
> select KEYS
> select RAID6_PQ
> select XOR_BLOCKS
> diff --git a/fs/bcachefs/bcachefs.h b/fs/bcachefs/bcachefs.h
> index b432bb6e6f6e0..0ea593e813f43 100644
> --- a/fs/bcachefs/bcachefs.h
> +++ b/fs/bcachefs/bcachefs.h
> @@ -977,11 +977,10 @@ struct bch_fs {
>
> mempool_t compression_bounce[2];
> mempool_t compress_workspace[BCH_COMPRESSION_OPT_NR];
> size_t zstd_workspace_size;
>
> - struct crypto_shash *sha256;
> struct crypto_sync_skcipher *chacha20;
> struct crypto_shash *poly1305;
>
> atomic64_t key_version;
>
> diff --git a/fs/bcachefs/checksum.c b/fs/bcachefs/checksum.c
> index 23a383577d4c7..208e13e308084 100644
> --- a/fs/bcachefs/checksum.c
> +++ b/fs/bcachefs/checksum.c
> @@ -786,28 +786,18 @@ void bch2_fs_encryption_exit(struct bch_fs *c)
> {
> if (c->poly1305)
> crypto_free_shash(c->poly1305);
> if (c->chacha20)
> crypto_free_sync_skcipher(c->chacha20);
> - if (c->sha256)
> - crypto_free_shash(c->sha256);
> }
>
> int bch2_fs_encryption_init(struct bch_fs *c)
> {
> struct bch_sb_field_crypt *crypt;
> struct bch_key key;
> int ret = 0;
>
> - c->sha256 = crypto_alloc_shash("sha256", 0, 0);
> - ret = PTR_ERR_OR_ZERO(c->sha256);
> - if (ret) {
> - c->sha256 = NULL;
> - bch_err(c, "error requesting sha256 module: %s", bch2_err_str(ret));
> - goto out;
> - }
> -
> crypt = bch2_sb_field_get(c->disk_sb.sb, crypt);
> if (!crypt)
> goto out;
>
> ret = bch2_alloc_ciphers(c);
> diff --git a/fs/bcachefs/str_hash.h b/fs/bcachefs/str_hash.h
> index f645a4547b049..575ad1e039040 100644
> --- a/fs/bcachefs/str_hash.h
> +++ b/fs/bcachefs/str_hash.h
> @@ -10,11 +10,10 @@
> #include "siphash.h"
> #include "subvolume.h"
> #include "super.h"
>
> #include <linux/crc32c.h>
> -#include <crypto/hash.h>
> #include <crypto/sha2.h>
>
> static inline enum bch_str_hash_type
> bch2_str_hash_opt_to_type(struct bch_fs *c, enum bch_str_hash_opts opt)
> {
> @@ -53,17 +52,14 @@ bch2_hash_info_init(struct bch_fs *c, const struct bch_inode_unpacked *bi)
> #endif
> .siphash_key = { .k0 = bi->bi_hash_seed }
> };
>
> if (unlikely(info.type == BCH_STR_HASH_siphash_old)) {
> - SHASH_DESC_ON_STACK(desc, c->sha256);
> u8 digest[SHA256_DIGEST_SIZE];
>
> - desc->tfm = c->sha256;
> -
> - crypto_shash_digest(desc, (void *) &bi->bi_hash_seed,
> - sizeof(bi->bi_hash_seed), digest);
> + sha256((const u8 *)&bi->bi_hash_seed,
> + sizeof(bi->bi_hash_seed), digest);
> memcpy(&info.siphash_key, digest, sizeof(info.siphash_key));
> }
>
> return info;
> }
> diff --git a/fs/bcachefs/super.c b/fs/bcachefs/super.c
> index 6de3a5751561e..8e928b3d8ef4a 100644
> --- a/fs/bcachefs/super.c
> +++ b/fs/bcachefs/super.c
> @@ -73,11 +73,10 @@
> #include <crypto/hash.h>
>
> MODULE_LICENSE("GPL");
> MODULE_AUTHOR("Kent Overstreet <kent.overstreet@gmail.com>");
> MODULE_DESCRIPTION("bcachefs filesystem");
> -MODULE_SOFTDEP("pre: sha256");
> MODULE_SOFTDEP("pre: chacha20");
> MODULE_SOFTDEP("pre: poly1305");
> MODULE_SOFTDEP("pre: xxhash");
>
> const char * const bch2_fs_flag_strs[] = {
>
> base-commit: da920b7df701770e006928053672147075587fb2
> prerequisite-patch-id: 500a8dddbef9cb497eecaf59c0cb8fc7f2e4380e
> --
> 2.49.0
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-03-16 17:41 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-16 3:47 [PATCH] bcachefs: use sha256() instead of crypto_shash API Eric Biggers
2025-03-16 17:41 ` Kent Overstreet
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.