diff options
Diffstat (limited to 'recipes-kernel/cryptodev/sdk_patches/0032-avoid-calls-to-kmalloc-on-hotpaths.patch')
-rw-r--r-- | recipes-kernel/cryptodev/sdk_patches/0032-avoid-calls-to-kmalloc-on-hotpaths.patch | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/recipes-kernel/cryptodev/sdk_patches/0032-avoid-calls-to-kmalloc-on-hotpaths.patch b/recipes-kernel/cryptodev/sdk_patches/0032-avoid-calls-to-kmalloc-on-hotpaths.patch deleted file mode 100644 index 2aa5810b..00000000 --- a/recipes-kernel/cryptodev/sdk_patches/0032-avoid-calls-to-kmalloc-on-hotpaths.patch +++ /dev/null @@ -1,220 +0,0 @@ -From 9b513838035c35fd3706bb824edd17d705641439 Mon Sep 17 00:00:00 2001 -From: Cristian Stoica <cristian.stoica@nxp.com> -Date: Tue, 12 Jan 2016 15:13:15 +0200 -Subject: [PATCH 32/38] avoid calls to kmalloc on hotpaths - -We replace a pointer to a small structure with the structure itself to -avoid unnecessary dynamic allocations at runtime. The embedding -structure is itself dynamically allocated and we get a slight increase -in performance from elimination of unnecessary code. - -Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com> ---- - cryptlib.c | 42 +++++++++++++----------------------------- - cryptlib.h | 14 +++++++------- - 2 files changed, 20 insertions(+), 36 deletions(-) - -diff --git a/cryptlib.c b/cryptlib.c -index 4fd29eb..5972fc2 100644 ---- a/cryptlib.c -+++ b/cryptlib.c -@@ -178,13 +178,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, - out->stream = stream; - out->aead = aead; - -- out->async.result = kzalloc(sizeof(*out->async.result), GFP_KERNEL); -- if (unlikely(!out->async.result)) { -- ret = -ENOMEM; -- goto error; -- } -- -- init_completion(&out->async.result->completion); -+ init_completion(&out->async.result.completion); - - if (aead == 0) { - out->async.request = ablkcipher_request_alloc(out->async.s, GFP_KERNEL); -@@ -195,7 +189,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, - } - - ablkcipher_request_set_callback(out->async.request, 0, -- cryptodev_complete, out->async.result); -+ cryptodev_complete, &out->async.result); - } else { - out->async.arequest = aead_request_alloc(out->async.as, GFP_KERNEL); - if (unlikely(!out->async.arequest)) { -@@ -205,7 +199,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, - } - - aead_request_set_callback(out->async.arequest, 0, -- cryptodev_complete, out->async.result); -+ cryptodev_complete, &out->async.result); - } - - out->init = 1; -@@ -222,7 +216,6 @@ error: - if (out->async.as) - crypto_free_aead(out->async.as); - } -- kfree(out->async.result); - - return ret; - } -@@ -242,7 +235,6 @@ void cryptodev_cipher_deinit(struct cipher_data *cdata) - crypto_free_aead(cdata->async.as); - } - -- kfree(cdata->async.result); - cdata->init = 0; - } - } -@@ -279,7 +271,7 @@ ssize_t cryptodev_cipher_encrypt(struct cipher_data *cdata, - { - int ret; - -- reinit_completion(&cdata->async.result->completion); -+ reinit_completion(&cdata->async.result.completion); - - if (cdata->aead == 0) { - ablkcipher_request_set_crypt(cdata->async.request, -@@ -293,7 +285,7 @@ ssize_t cryptodev_cipher_encrypt(struct cipher_data *cdata, - ret = crypto_aead_encrypt(cdata->async.arequest); - } - -- return waitfor(cdata->async.result, ret); -+ return waitfor(&cdata->async.result, ret); - } - - ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata, -@@ -302,7 +294,7 @@ ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata, - { - int ret; - -- reinit_completion(&cdata->async.result->completion); -+ reinit_completion(&cdata->async.result.completion); - if (cdata->aead == 0) { - ablkcipher_request_set_crypt(cdata->async.request, - (struct scatterlist *)src, dst, -@@ -315,7 +307,7 @@ ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata, - ret = crypto_aead_decrypt(cdata->async.arequest); - } - -- return waitfor(cdata->async.result, ret); -+ return waitfor(&cdata->async.result, ret); - } - - /* Hash functions */ -@@ -345,13 +337,7 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, - hdata->digestsize = crypto_ahash_digestsize(hdata->async.s); - hdata->alignmask = crypto_ahash_alignmask(hdata->async.s); - -- hdata->async.result = kzalloc(sizeof(*hdata->async.result), GFP_KERNEL); -- if (unlikely(!hdata->async.result)) { -- ret = -ENOMEM; -- goto error; -- } -- -- init_completion(&hdata->async.result->completion); -+ init_completion(&hdata->async.result.completion); - - hdata->async.request = ahash_request_alloc(hdata->async.s, GFP_KERNEL); - if (unlikely(!hdata->async.request)) { -@@ -361,12 +347,11 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, - } - - ahash_request_set_callback(hdata->async.request, 0, -- cryptodev_complete, hdata->async.result); -+ cryptodev_complete, &hdata->async.result); - hdata->init = 1; - return 0; - - error: -- kfree(hdata->async.result); - crypto_free_ahash(hdata->async.s); - return ret; - } -@@ -376,7 +361,6 @@ void cryptodev_hash_deinit(struct hash_data *hdata) - if (hdata->init) { - if (hdata->async.request) - ahash_request_free(hdata->async.request); -- kfree(hdata->async.result); - if (hdata->async.s) - crypto_free_ahash(hdata->async.s); - hdata->init = 0; -@@ -402,24 +386,24 @@ ssize_t cryptodev_hash_update(struct hash_data *hdata, - { - int ret; - -- reinit_completion(&hdata->async.result->completion); -+ reinit_completion(&hdata->async.result.completion); - ahash_request_set_crypt(hdata->async.request, sg, NULL, len); - - ret = crypto_ahash_update(hdata->async.request); - -- return waitfor(hdata->async.result, ret); -+ return waitfor(&hdata->async.result, ret); - } - - int cryptodev_hash_final(struct hash_data *hdata, void *output) - { - int ret; - -- reinit_completion(&hdata->async.result->completion); -+ reinit_completion(&hdata->async.result.completion); - ahash_request_set_crypt(hdata->async.request, NULL, output, 0); - - ret = crypto_ahash_final(hdata->async.request); - -- return waitfor(hdata->async.result, ret); -+ return waitfor(&hdata->async.result, ret); - } - - int cryptodev_pkc_offload(struct cryptodev_pkc *pkc) -diff --git a/cryptlib.h b/cryptlib.h -index e1c4e3e..d8e8046 100644 ---- a/cryptlib.h -+++ b/cryptlib.h -@@ -6,6 +6,11 @@ - - #include <linux/version.h> - -+struct cryptodev_result { -+ struct completion completion; -+ int err; -+}; -+ - struct cipher_data { - int init; /* 0 uninitialized */ - int blocksize; -@@ -22,7 +27,7 @@ struct cipher_data { - struct crypto_aead *as; - struct aead_request *arequest; - -- struct cryptodev_result *result; -+ struct cryptodev_result result; - uint8_t iv[EALG_MAX_BLOCK_LEN]; - } async; - }; -@@ -85,7 +90,7 @@ struct hash_data { - int alignmask; - struct { - struct crypto_ahash *s; -- struct cryptodev_result *result; -+ struct cryptodev_result result; - struct ahash_request *request; - } async; - }; -@@ -104,11 +109,6 @@ enum offload_type { - ASYNCHRONOUS - }; - --struct cryptodev_result { -- struct completion completion; -- int err; --}; -- - struct cryptodev_pkc { - struct list_head list; /* To maintain the Jobs in completed - cryptodev lists */ --- -2.7.0 - |