summaryrefslogtreecommitdiff
path: root/crypto/seqiv.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2023-01-13 18:27:51 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2023-01-20 18:29:31 +0800
commitef591c7f3b434de7f2309bc9601b1926e4aa055d (patch)
tree7ec03e75e681b38642fab1959f2dbc4fc16b8268 /crypto/seqiv.c
parent3f8703f5d07212871effa9b09eb6385fe410a0d0 (diff)
downloadlinux-crypto-ef591c7f3b434de7f2309bc9601b1926e4aa055d.tar.gz
linux-crypto-ef591c7f3b434de7f2309bc9601b1926e4aa055d.zip
crypto: seqiv - Handle EBUSY correctly
As it is seqiv only handles the special return value of EINPROGERSS, which means that in all other cases it will free data related to the request. However, as the caller of seqiv may specify MAY_BACKLOG, we also need to expect EBUSY and treat it in the same way. Otherwise backlogged requests will trigger a use-after-free. Fixes: 20089c96d6eb ("[CRYPTO] seqiv: Add Sequence Number IV Generator") Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/seqiv.c')
-rw-r--r--crypto/seqiv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/seqiv.c b/crypto/seqiv.c
index 0899d527..b1bcfe53 100644
--- a/crypto/seqiv.c
+++ b/crypto/seqiv.c
@@ -23,7 +23,7 @@ static void seqiv_aead_encrypt_complete2(struct aead_request *req, int err)
struct aead_request *subreq = aead_request_ctx(req);
struct crypto_aead *geniv;
- if (err == -EINPROGRESS)
+ if (err == -EINPROGRESS || err == -EBUSY)
return;
if (err)