All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.