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