aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/testmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/testmgr.c')
-rw-r--r--crypto/testmgr.c58
1 files changed, 27 insertions, 31 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 037368d34586..f4ed6d4205e7 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -181,10 +181,9 @@ static void testmgr_free_buf(char *buf[XBUFSIZE])
181static int wait_async_op(struct tcrypt_result *tr, int ret) 181static int wait_async_op(struct tcrypt_result *tr, int ret)
182{ 182{
183 if (ret == -EINPROGRESS || ret == -EBUSY) { 183 if (ret == -EINPROGRESS || ret == -EBUSY) {
184 ret = wait_for_completion_interruptible(&tr->completion); 184 wait_for_completion(&tr->completion);
185 if (!ret)
186 ret = tr->err;
187 reinit_completion(&tr->completion); 185 reinit_completion(&tr->completion);
186 ret = tr->err;
188 } 187 }
189 return ret; 188 return ret;
190} 189}
@@ -353,12 +352,11 @@ static int __test_hash(struct crypto_ahash *tfm, struct hash_testvec *template,
353 break; 352 break;
354 case -EINPROGRESS: 353 case -EINPROGRESS:
355 case -EBUSY: 354 case -EBUSY:
356 ret = wait_for_completion_interruptible( 355 wait_for_completion(&tresult.completion);
357 &tresult.completion); 356 reinit_completion(&tresult.completion);
358 if (!ret && !(ret = tresult.err)) { 357 ret = tresult.err;
359 reinit_completion(&tresult.completion); 358 if (!ret)
360 break; 359 break;
361 }
362 /* fall through */ 360 /* fall through */
363 default: 361 default:
364 printk(KERN_ERR "alg: hash: digest failed " 362 printk(KERN_ERR "alg: hash: digest failed "
@@ -431,7 +429,7 @@ static int __test_aead(struct crypto_aead *tfm, int enc,
431 struct scatterlist *sgout; 429 struct scatterlist *sgout;
432 const char *e, *d; 430 const char *e, *d;
433 struct tcrypt_result result; 431 struct tcrypt_result result;
434 unsigned int authsize; 432 unsigned int authsize, iv_len;
435 void *input; 433 void *input;
436 void *output; 434 void *output;
437 void *assoc; 435 void *assoc;
@@ -502,10 +500,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc,
502 500
503 memcpy(input, template[i].input, template[i].ilen); 501 memcpy(input, template[i].input, template[i].ilen);
504 memcpy(assoc, template[i].assoc, template[i].alen); 502 memcpy(assoc, template[i].assoc, template[i].alen);
503 iv_len = crypto_aead_ivsize(tfm);
505 if (template[i].iv) 504 if (template[i].iv)
506 memcpy(iv, template[i].iv, MAX_IVLEN); 505 memcpy(iv, template[i].iv, iv_len);
507 else 506 else
508 memset(iv, 0, MAX_IVLEN); 507 memset(iv, 0, iv_len);
509 508
510 crypto_aead_clear_flags(tfm, ~0); 509 crypto_aead_clear_flags(tfm, ~0);
511 if (template[i].wk) 510 if (template[i].wk)
@@ -569,12 +568,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc,
569 break; 568 break;
570 case -EINPROGRESS: 569 case -EINPROGRESS:
571 case -EBUSY: 570 case -EBUSY:
572 ret = wait_for_completion_interruptible( 571 wait_for_completion(&result.completion);
573 &result.completion); 572 reinit_completion(&result.completion);
574 if (!ret && !(ret = result.err)) { 573 ret = result.err;
575 reinit_completion(&result.completion); 574 if (!ret)
576 break; 575 break;
577 }
578 case -EBADMSG: 576 case -EBADMSG:
579 if (template[i].novrfy) 577 if (template[i].novrfy)
580 /* verification failure was expected */ 578 /* verification failure was expected */
@@ -720,12 +718,11 @@ static int __test_aead(struct crypto_aead *tfm, int enc,
720 break; 718 break;
721 case -EINPROGRESS: 719 case -EINPROGRESS:
722 case -EBUSY: 720 case -EBUSY:
723 ret = wait_for_completion_interruptible( 721 wait_for_completion(&result.completion);
724 &result.completion); 722 reinit_completion(&result.completion);
725 if (!ret && !(ret = result.err)) { 723 ret = result.err;
726 reinit_completion(&result.completion); 724 if (!ret)
727 break; 725 break;
728 }
729 case -EBADMSG: 726 case -EBADMSG:
730 if (template[i].novrfy) 727 if (template[i].novrfy)
731 /* verification failure was expected */ 728 /* verification failure was expected */
@@ -1002,12 +999,11 @@ static int __test_skcipher(struct crypto_ablkcipher *tfm, int enc,
1002 break; 999 break;
1003 case -EINPROGRESS: 1000 case -EINPROGRESS:
1004 case -EBUSY: 1001 case -EBUSY:
1005 ret = wait_for_completion_interruptible( 1002 wait_for_completion(&result.completion);
1006 &result.completion); 1003 reinit_completion(&result.completion);
1007 if (!ret && !((ret = result.err))) { 1004 ret = result.err;
1008 reinit_completion(&result.completion); 1005 if (!ret)
1009 break; 1006 break;
1010 }
1011 /* fall through */ 1007 /* fall through */
1012 default: 1008 default:
1013 pr_err("alg: skcipher%s: %s failed on test %d for %s: ret=%d\n", 1009 pr_err("alg: skcipher%s: %s failed on test %d for %s: ret=%d\n",
@@ -1097,12 +1093,11 @@ static int __test_skcipher(struct crypto_ablkcipher *tfm, int enc,
1097 break; 1093 break;
1098 case -EINPROGRESS: 1094 case -EINPROGRESS:
1099 case -EBUSY: 1095 case -EBUSY:
1100 ret = wait_for_completion_interruptible( 1096 wait_for_completion(&result.completion);
1101 &result.completion); 1097 reinit_completion(&result.completion);
1102 if (!ret && !((ret = result.err))) { 1098 ret = result.err;
1103 reinit_completion(&result.completion); 1099 if (!ret)
1104 break; 1100 break;
1105 }
1106 /* fall through */ 1101 /* fall through */
1107 default: 1102 default:
1108 pr_err("alg: skcipher%s: %s failed on chunk test %d for %s: ret=%d\n", 1103 pr_err("alg: skcipher%s: %s failed on chunk test %d for %s: ret=%d\n",
@@ -3299,6 +3294,7 @@ static const struct alg_test_desc alg_test_descs[] = {
3299 }, { 3294 }, {
3300 .alg = "rfc4106(gcm(aes))", 3295 .alg = "rfc4106(gcm(aes))",
3301 .test = alg_test_aead, 3296 .test = alg_test_aead,
3297 .fips_allowed = 1,
3302 .suite = { 3298 .suite = {
3303 .aead = { 3299 .aead = {
3304 .enc = { 3300 .enc = {