dm crypt: don't use drivers that have CRYPTO_ALG_ALLOCATES_MEMORY
Don't use crypto drivers that have the flag CRYPTO_ALG_ALLOCATES_MEMORY set. These drivers allocate memory and thus they are unsuitable for block I/O processing. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
d4a512edcc
commit
cd74693870
@ -424,7 +424,8 @@ static int crypt_iv_lmk_ctr(struct crypt_config *cc, struct dm_target *ti,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lmk->hash_tfm = crypto_alloc_shash("md5", 0, 0);
|
lmk->hash_tfm = crypto_alloc_shash("md5", 0,
|
||||||
|
CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
if (IS_ERR(lmk->hash_tfm)) {
|
if (IS_ERR(lmk->hash_tfm)) {
|
||||||
ti->error = "Error initializing LMK hash";
|
ti->error = "Error initializing LMK hash";
|
||||||
return PTR_ERR(lmk->hash_tfm);
|
return PTR_ERR(lmk->hash_tfm);
|
||||||
@ -586,7 +587,8 @@ static int crypt_iv_tcw_ctr(struct crypt_config *cc, struct dm_target *ti,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
tcw->crc32_tfm = crypto_alloc_shash("crc32", 0, 0);
|
tcw->crc32_tfm = crypto_alloc_shash("crc32", 0,
|
||||||
|
CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
if (IS_ERR(tcw->crc32_tfm)) {
|
if (IS_ERR(tcw->crc32_tfm)) {
|
||||||
ti->error = "Error initializing CRC32 in TCW";
|
ti->error = "Error initializing CRC32 in TCW";
|
||||||
return PTR_ERR(tcw->crc32_tfm);
|
return PTR_ERR(tcw->crc32_tfm);
|
||||||
@ -773,7 +775,8 @@ static int crypt_iv_elephant_ctr(struct crypt_config *cc, struct dm_target *ti,
|
|||||||
struct iv_elephant_private *elephant = &cc->iv_gen_private.elephant;
|
struct iv_elephant_private *elephant = &cc->iv_gen_private.elephant;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
elephant->tfm = crypto_alloc_skcipher("ecb(aes)", 0, 0);
|
elephant->tfm = crypto_alloc_skcipher("ecb(aes)", 0,
|
||||||
|
CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
if (IS_ERR(elephant->tfm)) {
|
if (IS_ERR(elephant->tfm)) {
|
||||||
r = PTR_ERR(elephant->tfm);
|
r = PTR_ERR(elephant->tfm);
|
||||||
elephant->tfm = NULL;
|
elephant->tfm = NULL;
|
||||||
@ -2154,7 +2157,8 @@ static int crypt_alloc_tfms_skcipher(struct crypt_config *cc, char *ciphermode)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
for (i = 0; i < cc->tfms_count; i++) {
|
for (i = 0; i < cc->tfms_count; i++) {
|
||||||
cc->cipher_tfm.tfms[i] = crypto_alloc_skcipher(ciphermode, 0, 0);
|
cc->cipher_tfm.tfms[i] = crypto_alloc_skcipher(ciphermode, 0,
|
||||||
|
CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
if (IS_ERR(cc->cipher_tfm.tfms[i])) {
|
if (IS_ERR(cc->cipher_tfm.tfms[i])) {
|
||||||
err = PTR_ERR(cc->cipher_tfm.tfms[i]);
|
err = PTR_ERR(cc->cipher_tfm.tfms[i]);
|
||||||
crypt_free_tfms(cc);
|
crypt_free_tfms(cc);
|
||||||
@ -2180,7 +2184,8 @@ static int crypt_alloc_tfms_aead(struct crypt_config *cc, char *ciphermode)
|
|||||||
if (!cc->cipher_tfm.tfms)
|
if (!cc->cipher_tfm.tfms)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
cc->cipher_tfm.tfms_aead[0] = crypto_alloc_aead(ciphermode, 0, 0);
|
cc->cipher_tfm.tfms_aead[0] = crypto_alloc_aead(ciphermode, 0,
|
||||||
|
CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
if (IS_ERR(cc->cipher_tfm.tfms_aead[0])) {
|
if (IS_ERR(cc->cipher_tfm.tfms_aead[0])) {
|
||||||
err = PTR_ERR(cc->cipher_tfm.tfms_aead[0]);
|
err = PTR_ERR(cc->cipher_tfm.tfms_aead[0]);
|
||||||
crypt_free_tfms(cc);
|
crypt_free_tfms(cc);
|
||||||
@ -2667,7 +2672,7 @@ static int crypt_ctr_auth_cipher(struct crypt_config *cc, char *cipher_api)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
strncpy(mac_alg, start, end - start);
|
strncpy(mac_alg, start, end - start);
|
||||||
|
|
||||||
mac = crypto_alloc_ahash(mac_alg, 0, 0);
|
mac = crypto_alloc_ahash(mac_alg, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
|
||||||
kfree(mac_alg);
|
kfree(mac_alg);
|
||||||
|
|
||||||
if (IS_ERR(mac))
|
if (IS_ERR(mac))
|
||||||
|
Loading…
Reference in New Issue
Block a user