* [PATCH] fscrypt: Use lock guards for mutexes
@ 2026-06-18 18:48 Eric Biggers
0 siblings, 0 replies; only message in thread
From: Eric Biggers @ 2026-06-18 18:48 UTC (permalink / raw)
To: linux-fscrypt; +Cc: linux-fsdevel, linux-kernel, Eric Biggers
Replace all remaining calls to mutex_lock() and mutex_unlock() in
fs/crypto/ with lock guards. No functional change.
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
---
This is intended to be taken through the fscrypt tree for 7.3
fs/crypto/crypto.c | 13 ++++---------
fs/crypto/keyring.c | 3 +--
fs/crypto/keysetup.c | 23 +++++++++++------------
3 files changed, 16 insertions(+), 23 deletions(-)
diff --git a/fs/crypto/crypto.c b/fs/crypto/crypto.c
index 570a2231c945..10097a3251f5 100644
--- a/fs/crypto/crypto.c
+++ b/fs/crypto/crypto.c
@@ -321,35 +321,30 @@ EXPORT_SYMBOL(fscrypt_decrypt_block_inplace);
*
* Return: 0 on success; -errno on failure
*/
int fscrypt_initialize(struct super_block *sb)
{
- int err = 0;
mempool_t *pool;
/* pairs with smp_store_release() below */
if (likely(smp_load_acquire(&fscrypt_bounce_page_pool)))
return 0;
/* No need to allocate a bounce page pool if this FS won't use it. */
if (!sb->s_cop->needs_bounce_pages)
return 0;
- mutex_lock(&fscrypt_init_mutex);
+ guard(mutex)(&fscrypt_init_mutex);
if (fscrypt_bounce_page_pool)
- goto out_unlock;
+ return 0;
- err = -ENOMEM;
pool = mempool_create_page_pool(num_prealloc_crypto_pages, 0);
if (!pool)
- goto out_unlock;
+ return -ENOMEM;
/* pairs with smp_load_acquire() above */
smp_store_release(&fscrypt_bounce_page_pool, pool);
- err = 0;
-out_unlock:
- mutex_unlock(&fscrypt_init_mutex);
- return err;
+ return 0;
}
void fscrypt_msg(const struct inode *inode, const char *level,
const char *fmt, ...)
{
diff --git a/fs/crypto/keyring.c b/fs/crypto/keyring.c
index 5fe0d985a58d..6ce6b436c34f 100644
--- a/fs/crypto/keyring.c
+++ b/fs/crypto/keyring.c
@@ -523,11 +523,11 @@ static int do_add_master_key(struct super_block *sb,
{
static DEFINE_MUTEX(fscrypt_add_key_mutex);
struct fscrypt_master_key *mk;
int err;
- mutex_lock(&fscrypt_add_key_mutex); /* serialize find + link */
+ guard(mutex)(&fscrypt_add_key_mutex); /* serialize find + link */
mk = fscrypt_find_master_key(sb, mk_spec);
if (!mk) {
/* Didn't find the key in ->s_master_keys. Add it. */
err = allocate_filesystem_keyring(sb);
@@ -550,11 +550,10 @@ static int do_add_master_key(struct super_block *sb,
*/
err = add_new_master_key(sb, secret, mk_spec);
}
fscrypt_put_master_key(mk);
}
- mutex_unlock(&fscrypt_add_key_mutex);
return err;
}
static int add_master_key(struct super_block *sb,
struct fscrypt_master_key_secret *secret,
diff --git a/fs/crypto/keysetup.c b/fs/crypto/keysetup.c
index f905f9f94bdd..281b5a8b0bcd 100644
--- a/fs/crypto/keysetup.c
+++ b/fs/crypto/keysetup.c
@@ -347,22 +347,21 @@ static int fscrypt_setup_iv_ino_lblk_32_key(struct fscrypt_inode_info *ci,
if (err)
return err;
/* pairs with smp_store_release() below */
if (!smp_load_acquire(&mk->mk_ino_hash_key_initialized)) {
-
- mutex_lock(&fscrypt_mode_key_setup_mutex);
-
- if (mk->mk_ino_hash_key_initialized)
- goto unlock;
-
- fscrypt_derive_siphash_key(mk, HKDF_CONTEXT_INODE_HASH_KEY,
- NULL, 0, &mk->mk_ino_hash_key);
- /* pairs with smp_load_acquire() above */
- smp_store_release(&mk->mk_ino_hash_key_initialized, true);
-unlock:
- mutex_unlock(&fscrypt_mode_key_setup_mutex);
+ guard(mutex)(&fscrypt_mode_key_setup_mutex);
+
+ if (!mk->mk_ino_hash_key_initialized) {
+ fscrypt_derive_siphash_key(mk,
+ HKDF_CONTEXT_INODE_HASH_KEY,
+ NULL, 0,
+ &mk->mk_ino_hash_key);
+ /* pairs with smp_load_acquire() above */
+ smp_store_release(&mk->mk_ino_hash_key_initialized,
+ true);
+ }
}
/*
* New inodes may not have an inode number assigned yet.
* Hashing their inode number is delayed until later.
base-commit: 83f1454877cc292b88baf13c829c16ce6937d120
prerequisite-patch-id: 319d2891e88c7df1ebb5ebf434d18b68f770399f
--
2.55.0.rc0.738.g0c8ab3ebcc-goog
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-06-18 18:49 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-18 18:48 [PATCH] fscrypt: Use lock guards for mutexes Eric Biggers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox