crypto: tegra - do not transfer req when tegra init fails
[ Upstream commit 15589bda46830695a3261518bb7627afac61f519 ]
The tegra_cmac_init or tegra_sha_init function may return an error when
memory is exhausted. It should not transfer the request when they return
an error.
Fixes: 0880bb3b00 ("crypto: tegra - Add Tegra Security Engine driver")
Signed-off-by: Chen Ridong <chenridong@huawei.com>
Acked-by: Akhil R <akhilrajeev@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2122e8553c
commit
1dbc270f9d
@@ -1752,10 +1752,13 @@ static int tegra_cmac_digest(struct ahash_request *req)
|
||||
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
|
||||
struct tegra_cmac_ctx *ctx = crypto_ahash_ctx(tfm);
|
||||
struct tegra_cmac_reqctx *rctx = ahash_request_ctx(req);
|
||||
int ret;
|
||||
|
||||
ret = tegra_cmac_init(req);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
tegra_cmac_init(req);
|
||||
rctx->task |= SHA_UPDATE | SHA_FINAL;
|
||||
|
||||
return crypto_transfer_hash_request_to_engine(ctx->se->engine, req);
|
||||
}
|
||||
|
||||
|
||||
@@ -615,13 +615,16 @@ static int tegra_sha_digest(struct ahash_request *req)
|
||||
struct tegra_sha_reqctx *rctx = ahash_request_ctx(req);
|
||||
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
|
||||
struct tegra_sha_ctx *ctx = crypto_ahash_ctx(tfm);
|
||||
int ret;
|
||||
|
||||
if (ctx->fallback)
|
||||
return tegra_sha_fallback_digest(req);
|
||||
|
||||
tegra_sha_init(req);
|
||||
rctx->task |= SHA_UPDATE | SHA_FINAL;
|
||||
ret = tegra_sha_init(req);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
rctx->task |= SHA_UPDATE | SHA_FINAL;
|
||||
return crypto_transfer_hash_request_to_engine(ctx->se->engine, req);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user