diff options
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/authenc.c | 10 | ||||
-rw-r--r-- | crypto/digest.c | 2 | ||||
-rw-r--r-- | crypto/tcrypt.c | 28 |
3 files changed, 26 insertions, 14 deletions
diff --git a/crypto/authenc.c b/crypto/authenc.c index 4b226768752..fd9f06c63d7 100644 --- a/crypto/authenc.c +++ b/crypto/authenc.c | |||
@@ -174,8 +174,9 @@ static int crypto_authenc_genicv(struct aead_request *req, u8 *iv, | |||
174 | static void crypto_authenc_encrypt_done(struct crypto_async_request *req, | 174 | static void crypto_authenc_encrypt_done(struct crypto_async_request *req, |
175 | int err) | 175 | int err) |
176 | { | 176 | { |
177 | struct aead_request *areq = req->data; | ||
178 | |||
177 | if (!err) { | 179 | if (!err) { |
178 | struct aead_request *areq = req->data; | ||
179 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); | 180 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); |
180 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); | 181 | struct crypto_authenc_ctx *ctx = crypto_aead_ctx(authenc); |
181 | struct ablkcipher_request *abreq = aead_request_ctx(areq); | 182 | struct ablkcipher_request *abreq = aead_request_ctx(areq); |
@@ -185,7 +186,7 @@ static void crypto_authenc_encrypt_done(struct crypto_async_request *req, | |||
185 | err = crypto_authenc_genicv(areq, iv, 0); | 186 | err = crypto_authenc_genicv(areq, iv, 0); |
186 | } | 187 | } |
187 | 188 | ||
188 | aead_request_complete(req->data, err); | 189 | aead_request_complete(areq, err); |
189 | } | 190 | } |
190 | 191 | ||
191 | static int crypto_authenc_encrypt(struct aead_request *req) | 192 | static int crypto_authenc_encrypt(struct aead_request *req) |
@@ -216,14 +217,15 @@ static int crypto_authenc_encrypt(struct aead_request *req) | |||
216 | static void crypto_authenc_givencrypt_done(struct crypto_async_request *req, | 217 | static void crypto_authenc_givencrypt_done(struct crypto_async_request *req, |
217 | int err) | 218 | int err) |
218 | { | 219 | { |
220 | struct aead_request *areq = req->data; | ||
221 | |||
219 | if (!err) { | 222 | if (!err) { |
220 | struct aead_request *areq = req->data; | ||
221 | struct skcipher_givcrypt_request *greq = aead_request_ctx(areq); | 223 | struct skcipher_givcrypt_request *greq = aead_request_ctx(areq); |
222 | 224 | ||
223 | err = crypto_authenc_genicv(areq, greq->giv, 0); | 225 | err = crypto_authenc_genicv(areq, greq->giv, 0); |
224 | } | 226 | } |
225 | 227 | ||
226 | aead_request_complete(req->data, err); | 228 | aead_request_complete(areq, err); |
227 | } | 229 | } |
228 | 230 | ||
229 | static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) | 231 | static int crypto_authenc_givencrypt(struct aead_givcrypt_request *req) |
diff --git a/crypto/digest.c b/crypto/digest.c index ac0919460d1..5d3f1303da9 100644 --- a/crypto/digest.c +++ b/crypto/digest.c | |||
@@ -225,7 +225,7 @@ int crypto_init_digest_ops_async(struct crypto_tfm *tfm) | |||
225 | struct ahash_tfm *crt = &tfm->crt_ahash; | 225 | struct ahash_tfm *crt = &tfm->crt_ahash; |
226 | struct digest_alg *dalg = &tfm->__crt_alg->cra_digest; | 226 | struct digest_alg *dalg = &tfm->__crt_alg->cra_digest; |
227 | 227 | ||
228 | if (dalg->dia_digestsize > crypto_tfm_alg_blocksize(tfm)) | 228 | if (dalg->dia_digestsize > PAGE_SIZE / 8) |
229 | return -EINVAL; | 229 | return -EINVAL; |
230 | 230 | ||
231 | crt->init = digest_async_init; | 231 | crt->init = digest_async_init; |
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 59821a22d75..66368022e0b 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -481,21 +481,31 @@ next_one: | |||
481 | 481 | ||
482 | for (k = 0, temp = 0; k < template[i].np; k++) { | 482 | for (k = 0, temp = 0; k < template[i].np; k++) { |
483 | printk(KERN_INFO "page %u\n", k); | 483 | printk(KERN_INFO "page %u\n", k); |
484 | q = &axbuf[IDX[k]]; | 484 | q = &xbuf[IDX[k]]; |
485 | hexdump(q, template[i].tap[k]); | 485 | |
486 | n = template[i].tap[k]; | ||
487 | if (k == template[i].np - 1) | ||
488 | n += enc ? authsize : -authsize; | ||
489 | hexdump(q, n); | ||
486 | printk(KERN_INFO "%s\n", | 490 | printk(KERN_INFO "%s\n", |
487 | memcmp(q, template[i].result + temp, | 491 | memcmp(q, template[i].result + temp, n) ? |
488 | template[i].tap[k] - | ||
489 | (k < template[i].np - 1 || enc ? | ||
490 | 0 : authsize)) ? | ||
491 | "fail" : "pass"); | 492 | "fail" : "pass"); |
492 | 493 | ||
493 | for (n = 0; q[template[i].tap[k] + n]; n++) | 494 | q += n; |
494 | ; | 495 | if (k == template[i].np - 1 && !enc) { |
496 | if (memcmp(q, template[i].input + | ||
497 | temp + n, authsize)) | ||
498 | n = authsize; | ||
499 | else | ||
500 | n = 0; | ||
501 | } else { | ||
502 | for (n = 0; q[n]; n++) | ||
503 | ; | ||
504 | } | ||
495 | if (n) { | 505 | if (n) { |
496 | printk("Result buffer corruption %u " | 506 | printk("Result buffer corruption %u " |
497 | "bytes:\n", n); | 507 | "bytes:\n", n); |
498 | hexdump(&q[template[i].tap[k]], n); | 508 | hexdump(q, n); |
499 | } | 509 | } |
500 | 510 | ||
501 | temp += template[i].tap[k]; | 511 | temp += template[i].tap[k]; |