crypto: testmgr - don't use interruptible wait in tests
[deliverable/linux.git] / crypto / tcrypt.c
index 890449e6e7efa85f8b80209eaa002a9babdf6faf..004349576ba13ab98d0e24f68c2ad94863e613c7 100644 (file)
@@ -764,10 +764,9 @@ static inline int do_one_ahash_op(struct ahash_request *req, int ret)
        if (ret == -EINPROGRESS || ret == -EBUSY) {
                struct tcrypt_result *tr = req->base.data;
 
-               ret = wait_for_completion_interruptible(&tr->completion);
-               if (!ret)
-                       ret = tr->err;
+               wait_for_completion(&tr->completion);
                reinit_completion(&tr->completion);
+               ret = tr->err;
        }
        return ret;
 }
@@ -993,10 +992,9 @@ static inline int do_one_acipher_op(struct ablkcipher_request *req, int ret)
        if (ret == -EINPROGRESS || ret == -EBUSY) {
                struct tcrypt_result *tr = req->base.data;
 
-               ret = wait_for_completion_interruptible(&tr->completion);
-               if (!ret)
-                       ret = tr->err;
+               wait_for_completion(&tr->completion);
                reinit_completion(&tr->completion);
+               ret = tr->err;
        }
 
        return ret;
@@ -1225,15 +1223,22 @@ static inline int tcrypt_test(const char *alg)
        return ret;
 }
 
-static int do_test(int m)
+static int do_test(const char *alg, u32 type, u32 mask, int m)
 {
        int i;
        int ret = 0;
 
        switch (m) {
        case 0:
+               if (alg) {
+                       if (!crypto_has_alg(alg, type,
+                                           mask ?: CRYPTO_ALG_TYPE_MASK))
+                               ret = -ENOENT;
+                       break;
+               }
+
                for (i = 1; i < 200; i++)
-                       ret += do_test(i);
+                       ret += do_test(NULL, 0, 0, i);
                break;
 
        case 1:
@@ -1752,6 +1757,11 @@ static int do_test(int m)
                break;
 
        case 300:
+               if (alg) {
+                       test_hash_speed(alg, sec, generic_hash_speed_template);
+                       break;
+               }
+
                /* fall through */
 
        case 301:
@@ -1838,6 +1848,11 @@ static int do_test(int m)
                break;
 
        case 400:
+               if (alg) {
+                       test_ahash_speed(alg, sec, generic_hash_speed_template);
+                       break;
+               }
+
                /* fall through */
 
        case 401:
@@ -2127,12 +2142,6 @@ static int do_test(int m)
        return ret;
 }
 
-static int do_alg_test(const char *alg, u32 type, u32 mask)
-{
-       return crypto_has_alg(alg, type, mask ?: CRYPTO_ALG_TYPE_MASK) ?
-              0 : -ENOENT;
-}
-
 static int __init tcrypt_mod_init(void)
 {
        int err = -ENOMEM;
@@ -2144,10 +2153,7 @@ static int __init tcrypt_mod_init(void)
                        goto err_free_tv;
        }
 
-       if (alg)
-               err = do_alg_test(alg, type, mask);
-       else
-               err = do_test(mode);
+       err = do_test(alg, type, mask, mode);
 
        if (err) {
                printk(KERN_ERR "tcrypt: one or more tests failed!\n");
This page took 0.025248 seconds and 5 git commands to generate.