diff options
Diffstat (limited to 'recipes-kernel/cryptodev/sdk_patches/0023-remove-MAY_BACKLOG-flag-from-requests.patch')
-rw-r--r-- | recipes-kernel/cryptodev/sdk_patches/0023-remove-MAY_BACKLOG-flag-from-requests.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/recipes-kernel/cryptodev/sdk_patches/0023-remove-MAY_BACKLOG-flag-from-requests.patch b/recipes-kernel/cryptodev/sdk_patches/0023-remove-MAY_BACKLOG-flag-from-requests.patch new file mode 100644 index 00000000..5674e035 --- /dev/null +++ b/recipes-kernel/cryptodev/sdk_patches/0023-remove-MAY_BACKLOG-flag-from-requests.patch @@ -0,0 +1,69 @@ +From 7d0d0deb255f8c59b0cf6d3944ee2e3be4133b4c Mon Sep 17 00:00:00 2001 +From: Alex Porosanu <alexandru.porosanu@freescale.com> +Date: Mon, 19 Oct 2015 11:53:11 +0300 +Subject: [PATCH 23/38] remove MAY_BACKLOG flag from requests + +cryptodev doesn't implement the backlogging mechanism properly, +since it misses the possibility of sleeping and waiting for +wake-up when the crypto driver below starts working on the +submitted backloggable request. +In case the crypto driver below implements backlogging mechanisms, +this can lead to side-effects such as working on previously-free'ed +data. +This patch removes the MAY_BACKLOG flag from the requests. + +Change-Id: Ia3d822b1abfc1a51e2ce3e9682476b2c99d19c5a +Signed-off-by: Alex Porosanu <alexandru.porosanu@freescale.com> +--- + cryptlib.c | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +diff --git a/cryptlib.c b/cryptlib.c +index 10f5e1a..eba4616 100644 +--- a/cryptlib.c ++++ b/cryptlib.c +@@ -194,8 +194,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, + goto error; + } + +- ablkcipher_request_set_callback(out->async.request, +- CRYPTO_TFM_REQ_MAY_BACKLOG, ++ ablkcipher_request_set_callback(out->async.request, 0, + cryptodev_complete, out->async.result); + } else { + out->async.arequest = aead_request_alloc(out->async.as, GFP_KERNEL); +@@ -205,8 +204,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, + goto error; + } + +- aead_request_set_callback(out->async.arequest, +- CRYPTO_TFM_REQ_MAY_BACKLOG, ++ aead_request_set_callback(out->async.arequest, 0, + cryptodev_complete, out->async.result); + } + +@@ -362,9 +360,8 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, + goto error; + } + +- ahash_request_set_callback(hdata->async.request, +- CRYPTO_TFM_REQ_MAY_BACKLOG, +- cryptodev_complete, hdata->async.result); ++ ahash_request_set_callback(hdata->async.request, 0, ++ cryptodev_complete, hdata->async.result); + + ret = crypto_ahash_init(hdata->async.request); + if (unlikely(ret)) { +@@ -439,8 +436,7 @@ int cryptodev_pkc_offload(struct cryptodev_pkc *pkc) + int ret; + + init_completion(&pkc->result.completion); +- pkc_request_set_callback(pkc->req, CRYPTO_TFM_REQ_MAY_BACKLOG, +- cryptodev_complete_asym, pkc); ++ pkc_request_set_callback(pkc->req, 0, cryptodev_complete_asym, pkc); + ret = crypto_pkc_op(pkc->req); + if (ret != -EINPROGRESS && ret != 0) + goto error; +-- +2.7.0 + |