|
@@ -286,6 +286,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;
|
|
|
|
|
@@ -293,6 +300,7 @@ static void encrypt_done(struct crypto_async_request *areq, int err)
|
|
|
if (rctx->left)
|
|
|
return;
|
|
|
|
|
|
+out:
|
|
|
skcipher_request_complete(req, err);
|
|
|
}
|
|
|
|
|
@@ -330,6 +338,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;
|
|
|
|
|
@@ -337,6 +352,7 @@ static void decrypt_done(struct crypto_async_request *areq, int err)
|
|
|
if (rctx->left)
|
|
|
return;
|
|
|
|
|
|
+out:
|
|
|
skcipher_request_complete(req, err);
|
|
|
}
|
|
|
|