mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-04 04:37:39 -04:00
crypto: tegra - Disable softirqs before finalizing request
Softirqs must be disabled when calling the finalization fucntion on
a request.
Reported-by: Guangwu Zhang <guazhang@redhat.com>
Fixes: 0880bb3b00 ("crypto: tegra - Add Tegra Security Engine driver")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
* Crypto driver to handle block cipher algorithms using NVIDIA Security Engine.
|
||||
*/
|
||||
|
||||
#include <linux/bottom_half.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/module.h>
|
||||
@@ -333,7 +334,9 @@ out:
|
||||
tegra_key_invalidate_reserved(ctx->se, key2_id, ctx->alg);
|
||||
|
||||
out_finalize:
|
||||
local_bh_disable();
|
||||
crypto_finalize_skcipher_request(se->engine, req, ret);
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1261,7 +1264,9 @@ out_free_inbuf:
|
||||
tegra_key_invalidate_reserved(ctx->se, rctx->key_id, ctx->alg);
|
||||
|
||||
out_finalize:
|
||||
local_bh_disable();
|
||||
crypto_finalize_aead_request(ctx->se->engine, req, ret);
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1347,7 +1352,9 @@ out_free_inbuf:
|
||||
tegra_key_invalidate_reserved(ctx->se, rctx->key_id, ctx->alg);
|
||||
|
||||
out_finalize:
|
||||
local_bh_disable();
|
||||
crypto_finalize_aead_request(ctx->se->engine, req, ret);
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1745,7 +1752,9 @@ out:
|
||||
if (tegra_key_is_reserved(rctx->key_id))
|
||||
tegra_key_invalidate_reserved(ctx->se, rctx->key_id, ctx->alg);
|
||||
|
||||
local_bh_disable();
|
||||
crypto_finalize_hash_request(se->engine, req, ret);
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
* Crypto driver to handle HASH algorithms using NVIDIA Security Engine.
|
||||
*/
|
||||
|
||||
#include <linux/bottom_half.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/module.h>
|
||||
@@ -546,7 +547,9 @@ static int tegra_sha_do_one_req(struct crypto_engine *engine, void *areq)
|
||||
}
|
||||
|
||||
out:
|
||||
local_bh_disable();
|
||||
crypto_finalize_hash_request(se->engine, req, ret);
|
||||
local_bh_enable();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user