summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilad Ben-Yossef <gilad@benyossef.com>2017-05-18 16:29:23 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2017-05-23 12:45:10 +0800
commit548b37ff50e23c4d92f3878e70cebc12dd365352 (patch)
tree6d12888be3147f219859e9616810bbb41c5f2652
parent3d5ec4b0af896e20a81cafb4c99ad81fdd04203c (diff)
downloadlinux-crypto-548b37ff50e23c4d92f3878e70cebc12dd365352.tar.gz
linux-crypto-548b37ff50e23c4d92f3878e70cebc12dd365352.zip
crypto: asymmetric_keys - handle EBUSY due to backlog correctly
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> CC: stable@vger.kernel.org Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r--crypto/asymmetric_keys/public_key.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/asymmetric_keys/public_key.c b/crypto/asymmetric_keys/public_key.c
index d3a989e7..3cd6e12c 100644
--- a/crypto/asymmetric_keys/public_key.c
+++ b/crypto/asymmetric_keys/public_key.c
@@ -141,7 +141,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;
}