hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/md/dm-default-key.c
....@@ -67,16 +67,13 @@
6767 static void default_key_dtr(struct dm_target *ti)
6868 {
6969 struct default_key_c *dkc = ti->private;
70
- int err;
7170
7271 if (dkc->dev) {
73
- err = blk_crypto_evict_key(dkc->dev->bdev->bd_queue, &dkc->key);
74
- if (err && err != -ENOKEY)
75
- DMWARN("Failed to evict crypto key: %d", err);
72
+ blk_crypto_evict_key(bdev_get_queue(dkc->dev->bdev), &dkc->key);
7673 dm_put_device(ti, dkc->dev);
7774 }
78
- kzfree(dkc->cipher_string);
79
- kzfree(dkc);
75
+ kfree_sensitive(dkc->cipher_string);
76
+ kfree_sensitive(dkc);
8077 }
8178
8279 static int default_key_ctr_optional(struct dm_target *ti,
....@@ -245,17 +242,14 @@
245242 goto bad;
246243 }
247244
248
- err = blk_crypto_start_using_mode(cipher->mode_num, dun_bytes,
249
- dkc->sector_size, dkc->is_hw_wrapped,
250
- dkc->dev->bdev->bd_queue);
245
+ err = blk_crypto_start_using_key(&dkc->key,
246
+ bdev_get_queue(dkc->dev->bdev));
251247 if (err) {
252248 ti->error = "Error starting to use blk-crypto";
253249 goto bad;
254250 }
255251
256252 ti->num_flush_bios = 1;
257
-
258
- ti->may_passthrough_inline_crypto = true;
259253
260254 err = 0;
261255 goto out;
....@@ -388,7 +382,7 @@
388382 const unsigned int sector_size = dkc->sector_size;
389383
390384 limits->logical_block_size =
391
- max_t(unsigned short, limits->logical_block_size, sector_size);
385
+ max_t(unsigned int, limits->logical_block_size, sector_size);
392386 limits->physical_block_size =
393387 max_t(unsigned int, limits->physical_block_size, sector_size);
394388 limits->io_min = max_t(unsigned int, limits->io_min, sector_size);
....@@ -397,6 +391,7 @@
397391 static struct target_type default_key_target = {
398392 .name = "default-key",
399393 .version = {2, 1, 0},
394
+ .features = DM_TARGET_PASSES_CRYPTO,
400395 .module = THIS_MODULE,
401396 .ctr = default_key_ctr,
402397 .dtr = default_key_dtr,