rpms/kernel/devel crypto-add-async-hash-testing.patch, NONE, 1.1 kernel.spec, 1.2033, 1.2034

Kyle McMartin kyle at fedoraproject.org
Thu Jun 17 10:02:16 UTC 2010


Author: kyle

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv1332

Modified Files:
	kernel.spec 
Added Files:
	crypto-add-async-hash-testing.patch 
Log Message:
* Thu Jun 17 2010 Kyle McMartin <kyle at redhat.com> 2.6.34-42
- Suck in patch from Dave Miller in 2.6.35 to add async hash testing,
  hopefully fixes error from previous commit. (But making it modular
  is still a good idea.)


crypto-add-async-hash-testing.patch:
 testmgr.c |   67 ++++++++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 48 insertions(+), 19 deletions(-)

--- NEW FILE crypto-add-async-hash-testing.patch ---
>From e45009229be6a7fae49bdfa3459905668c0b0fb1 Mon Sep 17 00:00:00 2001
From: David S. Miller <davem at davemloft.net>
Date: Wed, 19 May 2010 14:12:03 +1000
Subject: crypto: testmgr - Add testing for async hashing and update/final

Extend testmgr such that it tests async hash algorithms,
and that for both sync and async hashes it tests both
->digest() and ->update()/->final() sequences.

Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
---
 crypto/testmgr.c |   66 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 48 insertions(+), 18 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index c494d76..5c8aaa0 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -153,8 +153,21 @@ static void testmgr_free_buf(char *buf[XBUFSIZE])
 		free_page((unsigned long)buf[i]);
 }
 
+static int do_one_async_hash_op(struct ahash_request *req,
+				struct tcrypt_result *tr,
+				int ret)
+{
+	if (ret == -EINPROGRESS || ret == -EBUSY) {
+		ret = wait_for_completion_interruptible(&tr->completion);
+		if (!ret)
+			ret = tr->err;
+		INIT_COMPLETION(tr->completion);
+	}
+	return ret;
+}
+
 static int test_hash(struct crypto_ahash *tfm, struct hash_testvec *template,
-		     unsigned int tcount)
+		     unsigned int tcount, bool use_digest)
 {
 	const char *algo = crypto_tfm_alg_driver_name(crypto_ahash_tfm(tfm));
 	unsigned int i, j, k, temp;
@@ -206,23 +219,36 @@ static int test_hash(struct crypto_ahash *tfm, struct hash_testvec *template,
 		}
 
 		ahash_request_set_crypt(req, sg, result, template[i].psize);
-		ret = crypto_ahash_digest(req);
-		switch (ret) {
-		case 0:
-			break;
-		case -EINPROGRESS:
-		case -EBUSY:
-			ret = wait_for_completion_interruptible(
-				&tresult.completion);
-			if (!ret && !(ret = tresult.err)) {
-				INIT_COMPLETION(tresult.completion);
-				break;
+		if (use_digest) {
+			ret = do_one_async_hash_op(req, &tresult,
+						   crypto_ahash_digest(req));
+			if (ret) {
+				pr_err("alg: hash: digest failed on test %d "
+				       "for %s: ret=%d\n", j, algo, -ret);
+				goto out;
+			}
+		} else {
+			ret = do_one_async_hash_op(req, &tresult,
+						   crypto_ahash_init(req));
+			if (ret) {
+				pr_err("alt: hash: init failed on test %d "
+				       "for %s: ret=%d\n", j, algo, -ret);
+				goto out;
+			}
+			ret = do_one_async_hash_op(req, &tresult,
+						   crypto_ahash_update(req));
+			if (ret) {
+				pr_err("alt: hash: update failed on test %d "
+				       "for %s: ret=%d\n", j, algo, -ret);
+				goto out;
+			}
+			ret = do_one_async_hash_op(req, &tresult,
+						   crypto_ahash_final(req));
+			if (ret) {
+				pr_err("alt: hash: final failed on test %d "
+				       "for %s: ret=%d\n", j, algo, -ret);
+				goto out;
 			}
-			/* fall through */
-		default:
-			printk(KERN_ERR "alg: hash: digest failed on test %d "
-			       "for %s: ret=%d\n", j, algo, -ret);
-			goto out;
 		}
 
 		if (memcmp(result, template[i].digest,
@@ -1402,7 +1428,11 @@ static int alg_test_hash(const struct alg_test_desc *desc, const char *driver,
 		return PTR_ERR(tfm);
 	}
 
-	err = test_hash(tfm, desc->suite.hash.vecs, desc->suite.hash.count);
+	err = test_hash(tfm, desc->suite.hash.vecs,
+			desc->suite.hash.count, true);
+	if (!err)
+		err = test_hash(tfm, desc->suite.hash.vecs,
+				desc->suite.hash.count, false);
 
 	crypto_free_ahash(tfm);
 	return err;
-- 
1.7.0.1



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.2033
retrieving revision 1.2034
diff -u -p -r1.2033 -r1.2034
--- kernel.spec	17 Jun 2010 09:52:11 -0000	1.2033
+++ kernel.spec	17 Jun 2010 10:02:16 -0000	1.2034
@@ -671,6 +671,9 @@ Patch800: linux-2.6-crash-driver.patch
 
 Patch900: linux-2.6-cantiga-iommu-gfx.patch
 
+# crypto/
+Patch1200: crypto-add-async-hash-testing.patch
+
 Patch1515: lirc-2.6.33.patch
 Patch1517: hdpvr-ir-enable.patch
 
@@ -1277,6 +1280,11 @@ ApplyPatch linux-2.6-crash-driver.patch
 # Cantiga chipset b0rkage
 ApplyPatch linux-2.6-cantiga-iommu-gfx.patch
 
+# crypto/
+
+# Add async hash testing (a8f1a05)
+ApplyPatch crypto-add-async-hash-testing.patch
+
 # http://www.lirc.org/
 ApplyPatch lirc-2.6.33.patch
 # enable IR receiver on Hauppauge HD PVR (v4l-dvb merge pending)
@@ -1979,6 +1987,11 @@ fi
 #                 ||     ||
 
 %changelog
+* Thu Jun 17 2010 Kyle McMartin <kyle at redhat.com> 2.6.34-42
+- Suck in patch from Dave Miller in 2.6.35 to add async hash testing,
+  hopefully fixes error from previous commit. (But making it modular
+  is still a good idea.)
+
 * Thu Jun 17 2010 Kyle McMartin <kyle at redhat.com>
 - make ghash-clmulni modular to get rid of early boot noise (rhbz#586954)
   (not a /fix/ but it should at least quiet boot down a bit if you have



More information about the scm-commits mailing list