Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dm-integrity: prefer synchronous hash interface

The previous patch preferred async interface for the purpose of testing.
However, the synchronous interface is faster, so it should be preferred.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>

+24 -23
+24 -23
drivers/md/dm-integrity.c
··· 4354 4354 int r; 4355 4355 4356 4356 if (a->alg_string) { 4357 + if (shash) { 4358 + *shash = crypto_alloc_shash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY); 4359 + if (IS_ERR(*shash)) { 4360 + *shash = NULL; 4361 + goto try_ahash; 4362 + } 4363 + if (a->key) { 4364 + r = crypto_shash_setkey(*shash, a->key, a->key_size); 4365 + if (r) { 4366 + *error = error_key; 4367 + return r; 4368 + } 4369 + } else if (crypto_shash_get_flags(*shash) & CRYPTO_TFM_NEED_KEY) { 4370 + *error = error_key; 4371 + return -ENOKEY; 4372 + } 4373 + return 0; 4374 + } 4375 + try_ahash: 4357 4376 if (ahash) { 4358 4377 *ahash = crypto_alloc_ahash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY); 4359 4378 if (IS_ERR(*ahash)) { 4379 + *error = error_alg; 4380 + r = PTR_ERR(*ahash); 4360 4381 *ahash = NULL; 4361 - goto try_shash; 4382 + return r; 4362 4383 } 4363 - 4364 4384 if (a->key) { 4365 4385 r = crypto_ahash_setkey(*ahash, a->key, a->key_size); 4366 4386 if (r) { ··· 4391 4371 *error = error_key; 4392 4372 return -ENOKEY; 4393 4373 } 4394 - 4395 4374 return 0; 4396 4375 } 4397 - 4398 - try_shash: 4399 - *shash = crypto_alloc_shash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY); 4400 - if (IS_ERR(*shash)) { 4401 - *error = error_alg; 4402 - r = PTR_ERR(*shash); 4403 - *shash = NULL; 4404 - return r; 4405 - } 4406 - 4407 - if (a->key) { 4408 - r = crypto_shash_setkey(*shash, a->key, a->key_size); 4409 - if (r) { 4410 - *error = error_key; 4411 - return r; 4412 - } 4413 - } else if (crypto_shash_get_flags(*shash) & CRYPTO_TFM_NEED_KEY) { 4414 - *error = error_key; 4415 - return -ENOKEY; 4416 - } 4376 + *error = error_alg; 4377 + return -ENOENT; 4417 4378 } 4418 4379 4419 4380 return 0;