crypto: marvell/cesa - Use crypto_wait_req
This patch replaces the custom crypto completion function with crypto_req_done. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
3ce2d59715
commit
5efa718669
@ -1104,47 +1104,27 @@ struct ahash_alg mv_sha256_alg = {
|
||||
}
|
||||
};
|
||||
|
||||
struct mv_cesa_ahash_result {
|
||||
struct completion completion;
|
||||
int error;
|
||||
};
|
||||
|
||||
static void mv_cesa_hmac_ahash_complete(struct crypto_async_request *req,
|
||||
int error)
|
||||
{
|
||||
struct mv_cesa_ahash_result *result = req->data;
|
||||
|
||||
if (error == -EINPROGRESS)
|
||||
return;
|
||||
|
||||
result->error = error;
|
||||
complete(&result->completion);
|
||||
}
|
||||
|
||||
static int mv_cesa_ahmac_iv_state_init(struct ahash_request *req, u8 *pad,
|
||||
void *state, unsigned int blocksize)
|
||||
{
|
||||
struct mv_cesa_ahash_result result;
|
||||
DECLARE_CRYPTO_WAIT(result);
|
||||
struct scatterlist sg;
|
||||
int ret;
|
||||
|
||||
ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
|
||||
mv_cesa_hmac_ahash_complete, &result);
|
||||
crypto_req_done, &result);
|
||||
sg_init_one(&sg, pad, blocksize);
|
||||
ahash_request_set_crypt(req, &sg, pad, blocksize);
|
||||
init_completion(&result.completion);
|
||||
|
||||
ret = crypto_ahash_init(req);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = crypto_ahash_update(req);
|
||||
if (ret && ret != -EINPROGRESS)
|
||||
return ret;
|
||||
ret = crypto_wait_req(ret, &result);
|
||||
|
||||
wait_for_completion_interruptible(&result.completion);
|
||||
if (result.error)
|
||||
return result.error;
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = crypto_ahash_export(req, state);
|
||||
if (ret)
|
||||
@ -1158,7 +1138,7 @@ static int mv_cesa_ahmac_pad_init(struct ahash_request *req,
|
||||
u8 *ipad, u8 *opad,
|
||||
unsigned int blocksize)
|
||||
{
|
||||
struct mv_cesa_ahash_result result;
|
||||
DECLARE_CRYPTO_WAIT(result);
|
||||
struct scatterlist sg;
|
||||
int ret;
|
||||
int i;
|
||||
@ -1172,17 +1152,12 @@ static int mv_cesa_ahmac_pad_init(struct ahash_request *req,
|
||||
return -ENOMEM;
|
||||
|
||||
ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG,
|
||||
mv_cesa_hmac_ahash_complete,
|
||||
&result);
|
||||
crypto_req_done, &result);
|
||||
sg_init_one(&sg, keydup, keylen);
|
||||
ahash_request_set_crypt(req, &sg, ipad, keylen);
|
||||
init_completion(&result.completion);
|
||||
|
||||
ret = crypto_ahash_digest(req);
|
||||
if (ret == -EINPROGRESS) {
|
||||
wait_for_completion_interruptible(&result.completion);
|
||||
ret = result.error;
|
||||
}
|
||||
ret = crypto_wait_req(ret, &result);
|
||||
|
||||
/* Set the memory region to 0 to avoid any leak. */
|
||||
kfree_sensitive(keydup);
|
||||
|
Loading…
x
Reference in New Issue
Block a user