[PATCH 2/2] dm-crypt: Make crypt_iv_operations::wipe return void

From: Eric Biggers

Date: Sat Mar 21 2026 - 19:08:27 EST


Since all implementations of crypt_iv_operations::wipe now return 0,
change the return type to void.

Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---
drivers/md/dm-crypt.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 76b0c6bfd45c..885208a82c55 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -108,11 +108,11 @@ struct crypt_config;
struct crypt_iv_operations {
int (*ctr)(struct crypt_config *cc, struct dm_target *ti,
const char *opts);
void (*dtr)(struct crypt_config *cc);
int (*init)(struct crypt_config *cc);
- int (*wipe)(struct crypt_config *cc);
+ void (*wipe)(struct crypt_config *cc);
int (*generator)(struct crypt_config *cc, u8 *iv,
struct dm_crypt_request *dmreq);
int (*post)(struct crypt_config *cc, u8 *iv,
struct dm_crypt_request *dmreq);
};
@@ -506,18 +506,16 @@ static int crypt_iv_lmk_init(struct crypt_config *cc)
MD5_DIGEST_SIZE);

return 0;
}

-static int crypt_iv_lmk_wipe(struct crypt_config *cc)
+static void crypt_iv_lmk_wipe(struct crypt_config *cc)
{
struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;

if (lmk->seed)
memset(lmk->seed, 0, LMK_SEED_SIZE);
-
- return 0;
}

static void crypt_iv_lmk_one(struct crypt_config *cc, u8 *iv,
struct dm_crypt_request *dmreq, u8 *data)
{
@@ -627,18 +625,16 @@ static int crypt_iv_tcw_init(struct crypt_config *cc)
TCW_WHITENING_SIZE);

return 0;
}

-static int crypt_iv_tcw_wipe(struct crypt_config *cc)
+static void crypt_iv_tcw_wipe(struct crypt_config *cc)
{
struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;

memset(tcw->iv_seed, 0, cc->iv_size);
memset(tcw->whitening, 0, TCW_WHITENING_SIZE);
-
- return 0;
}

static void crypt_iv_tcw_whitening(struct crypt_config *cc,
struct dm_crypt_request *dmreq, u8 *data)
{
@@ -1013,16 +1009,15 @@ static int crypt_iv_elephant_init(struct crypt_config *cc)
int key_offset = cc->key_size - cc->key_extra_size;

return aes_prepareenckey(elephant->key, &cc->key[key_offset], cc->key_extra_size);
}

-static int crypt_iv_elephant_wipe(struct crypt_config *cc)
+static void crypt_iv_elephant_wipe(struct crypt_config *cc)
{
struct iv_elephant_private *elephant = &cc->iv_gen_private.elephant;

memzero_explicit(elephant->key, sizeof(*elephant->key));
- return 0;
}

static const struct crypt_iv_operations crypt_iv_plain_ops = {
.generator = crypt_iv_plain_gen
};
@@ -2646,15 +2641,12 @@ static int crypt_wipe_key(struct crypt_config *cc)

clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
get_random_bytes(&cc->key, cc->key_size);

/* Wipe IV private keys */
- if (cc->iv_gen_ops && cc->iv_gen_ops->wipe) {
- r = cc->iv_gen_ops->wipe(cc);
- if (r)
- return r;
- }
+ if (cc->iv_gen_ops && cc->iv_gen_ops->wipe)
+ cc->iv_gen_ops->wipe(cc);

kfree_sensitive(cc->key_string);
cc->key_string = NULL;
r = crypt_setkey(cc);
memset(&cc->key, 0, cc->key_size * sizeof(u8));
--
2.53.0