diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2024-09-18 15:05:29 +0200 |
---|---|---|
committer | Mikulas Patocka <mpatocka@redhat.com> | 2024-09-18 18:10:40 +0200 |
commit | c5391c0e04f1b6ede3623962192b08a4eb224491 (patch) | |
tree | 1877d7dfdb0d61d3a628d5ba8d0d62a68c63427c | |
parent | Revert "dm: requeue IO if mapping table not yet available" (diff) | |
download | linux-c5391c0e04f1b6ede3623962192b08a4eb224491.tar.xz linux-c5391c0e04f1b6ede3623962192b08a4eb224491.zip |
dm-crypt: Use up_read() together with key_put() only once in crypt_set_keyring_key()
The combination of the calls “up_read(&key->sem)” and “key_put(key)”
was immediately used after a return code check for a set_key() call
in this function implementation.
Thus use such a function call pair only once instead directly
before the check.
This issue was transformed by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
-rw-r--r-- | drivers/md/dm-crypt.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index d5533b43054e..dae2fe3cb182 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c @@ -2621,16 +2621,13 @@ static int crypt_set_keyring_key(struct crypt_config *cc, const char *key_string down_read(&key->sem); ret = set_key(cc, key); + up_read(&key->sem); + key_put(key); if (ret < 0) { - up_read(&key->sem); - key_put(key); kfree_sensitive(new_key_string); return ret; } - up_read(&key->sem); - key_put(key); - /* clear the flag since following operations may invalidate previously valid key */ clear_bit(DM_CRYPT_KEY_VALID, &cc->flags); |