|
@@ -48,6 +48,8 @@
|
|
|
#define ENCRYPT 1
|
|
|
#define DECRYPT 0
|
|
|
|
|
|
+#define MAX_DIGEST_SIZE 64
|
|
|
+
|
|
|
/*
|
|
|
* return a string with the driver name
|
|
|
*/
|
|
@@ -950,7 +952,7 @@ static void test_ahash_speed(const char *algo, unsigned int secs,
|
|
|
struct tcrypt_result tresult;
|
|
|
struct ahash_request *req;
|
|
|
struct crypto_ahash *tfm;
|
|
|
- static char output[1024];
|
|
|
+ char *output;
|
|
|
int i, ret;
|
|
|
|
|
|
tfm = crypto_alloc_ahash(algo, 0, 0);
|
|
@@ -963,9 +965,9 @@ static void test_ahash_speed(const char *algo, unsigned int secs,
|
|
|
printk(KERN_INFO "\ntesting speed of async %s (%s)\n", algo,
|
|
|
get_driver_name(crypto_ahash, tfm));
|
|
|
|
|
|
- if (crypto_ahash_digestsize(tfm) > sizeof(output)) {
|
|
|
- pr_err("digestsize(%u) > outputbuffer(%zu)\n",
|
|
|
- crypto_ahash_digestsize(tfm), sizeof(output));
|
|
|
+ if (crypto_ahash_digestsize(tfm) > MAX_DIGEST_SIZE) {
|
|
|
+ pr_err("digestsize(%u) > %d\n", crypto_ahash_digestsize(tfm),
|
|
|
+ MAX_DIGEST_SIZE);
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
@@ -980,6 +982,10 @@ static void test_ahash_speed(const char *algo, unsigned int secs,
|
|
|
ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
|
|
|
tcrypt_complete, &tresult);
|
|
|
|
|
|
+ output = kmalloc(MAX_DIGEST_SIZE, GFP_KERNEL);
|
|
|
+ if (!output)
|
|
|
+ goto out_nomem;
|
|
|
+
|
|
|
for (i = 0; speed[i].blen != 0; i++) {
|
|
|
if (speed[i].blen > TVMEMSIZE * PAGE_SIZE) {
|
|
|
pr_err("template (%u) too big for tvmem (%lu)\n",
|
|
@@ -1006,6 +1012,9 @@ static void test_ahash_speed(const char *algo, unsigned int secs,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ kfree(output);
|
|
|
+
|
|
|
+out_nomem:
|
|
|
ahash_request_free(req);
|
|
|
|
|
|
out:
|