|
@@ -345,6 +345,13 @@ static void encrypt_done(struct crypto_async_request *areq, int err)
|
|
|
struct rctx *rctx;
|
|
|
|
|
|
rctx = skcipher_request_ctx(req);
|
|
|
+
|
|
|
+ if (err == -EINPROGRESS) {
|
|
|
+ if (rctx->left != req->cryptlen)
|
|
|
+ return;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
subreq = &rctx->subreq;
|
|
|
subreq->base.flags &= CRYPTO_TFM_REQ_MAY_BACKLOG;
|
|
|
|
|
@@ -352,6 +359,7 @@ static void encrypt_done(struct crypto_async_request *areq, int err)
|
|
|
if (rctx->left)
|
|
|
return;
|
|
|
|
|
|
+out:
|
|
|
skcipher_request_complete(req, err);
|
|
|
}
|
|
|
|
|
@@ -389,6 +397,13 @@ static void decrypt_done(struct crypto_async_request *areq, int err)
|
|
|
struct rctx *rctx;
|
|
|
|
|
|
rctx = skcipher_request_ctx(req);
|
|
|
+
|
|
|
+ if (err == -EINPROGRESS) {
|
|
|
+ if (rctx->left != req->cryptlen)
|
|
|
+ return;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
subreq = &rctx->subreq;
|
|
|
subreq->base.flags &= CRYPTO_TFM_REQ_MAY_BACKLOG;
|
|
|
|
|
@@ -396,6 +411,7 @@ static void decrypt_done(struct crypto_async_request *areq, int err)
|
|
|
if (rctx->left)
|
|
|
return;
|
|
|
|
|
|
+out:
|
|
|
skcipher_request_complete(req, err);
|
|
|
}
|
|
|
|