crypto: testmgr - fix RNG return code enforcement
authorStephan Mueller <smueller@chronox.de>
Tue, 10 Mar 2015 16:00:36 +0000 (17:00 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 Mar 2015 10:37:15 +0000 (21:37 +1100)
Due to the change to RNGs to always return zero in success case, the
invocation of the RNGs in the test manager must be updated as otherwise
the RNG self tests are not properly executed any more.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Alexander Bergmann <abergmann@suse.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/testmgr.c

index f4ed6d4205e713880f1d3b8fb2a6b567c0a3154e..1f879adf495add9fbad235c30eeaab764e472b40 100644 (file)
@@ -1474,11 +1474,11 @@ static int test_cprng(struct crypto_rng *tfm, struct cprng_testvec *template,
                for (j = 0; j < template[i].loops; j++) {
                        err = crypto_rng_get_bytes(tfm, result,
                                                   template[i].rlen);
-                       if (err != template[i].rlen) {
+                       if (err < 0) {
                                printk(KERN_ERR "alg: cprng: Failed to obtain "
                                       "the correct amount of random data for "
-                                      "%s (requested %d, got %d)\n", algo,
-                                      template[i].rlen, err);
+                                      "%s (requested %d)\n", algo,
+                                      template[i].rlen);
                                goto out;
                        }
                }
@@ -1759,7 +1759,7 @@ static int drbg_cavs_test(struct drbg_testvec *test, int pr,
                ret = crypto_drbg_get_bytes_addtl(drng,
                        buf, test->expectedlen, &addtl);
        }
-       if (ret <= 0) {
+       if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
                goto outbuf;
@@ -1774,7 +1774,7 @@ static int drbg_cavs_test(struct drbg_testvec *test, int pr,
                ret = crypto_drbg_get_bytes_addtl(drng,
                        buf, test->expectedlen, &addtl);
        }
-       if (ret <= 0) {
+       if (ret < 0) {
                printk(KERN_ERR "alg: drbg: could not obtain random data for "
                       "driver %s\n", driver);
                goto outbuf;