aboutsummaryrefslogtreecommitdiffstats
path: root/meta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch')
-rwxr-xr-xmeta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/meta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch b/meta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch
new file mode 100755
index 00000000..52df2713
--- /dev/null
+++ b/meta-snowyowl/recipes-kernel/linux/files/0175-crypto-asymmetric_keys-handle-EBUSY-due-to-backlog-c.patch
@@ -0,0 +1,40 @@
+From ae89eb389dd82c3ff6ec07f28019f7f474605827 Mon Sep 17 00:00:00 2001
+From: Gilad Ben-Yossef <gilad@benyossef.com>
+Date: Thu, 18 May 2017 16:29:23 +0300
+Subject: [PATCH 021/331] crypto: asymmetric_keys - handle EBUSY due to backlog
+ correctly
+
+commit e68368aed56324e2e38d4f6b044bb8cf82077fc2 upstream.
+
+public_key_verify_signature() was passing the CRYPTO_TFM_REQ_MAY_BACKLOG
+flag to akcipher_request_set_callback() but was not handling correctly
+the case where a -EBUSY error could be returned from the call to
+crypto_akcipher_verify() if backlog was used, possibly casuing
+data corruption due to use-after-free of buffers.
+
+Resolve this by handling -EBUSY correctly.
+
+Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
+---
+ crypto/asymmetric_keys/public_key.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/crypto/asymmetric_keys/public_key.c b/crypto/asymmetric_keys/public_key.c
+index fd76b5f..4955eb6 100644
+--- a/crypto/asymmetric_keys/public_key.c
++++ b/crypto/asymmetric_keys/public_key.c
+@@ -140,7 +140,7 @@ int public_key_verify_signature(const struct public_key *pkey,
+ * signature and returns that to us.
+ */
+ ret = crypto_akcipher_verify(req);
+- if (ret == -EINPROGRESS) {
++ if ((ret == -EINPROGRESS) || (ret == -EBUSY)) {
+ wait_for_completion(&compl.completion);
+ ret = compl.err;
+ }
+--
+2.7.4
+