summaryrefslogtreecommitdiff
path: root/drivers/crypto
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2024-02-28 17:13:16 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-04-03 15:28:40 +0200
commit48dd260fdb728eda4a246f635d1325e82f0d3555 (patch)
tree040be2dd1c0d6f2740c7d6ca9fbba496d17babcd /drivers/crypto
parentc288a61a48ddb77ec097e11ab81b81027cd4e197 (diff)
downloadlinux-48dd260fdb728eda4a246f635d1325e82f0d3555.tar.gz
linux-48dd260fdb728eda4a246f635d1325e82f0d3555.tar.bz2
linux-48dd260fdb728eda4a246f635d1325e82f0d3555.zip
crypto: rk3288 - Fix use after free in unprepare
commit c0afb6b88fbbc177fa322a835f874be217bffe45 upstream. The unprepare call must be carried out before the finalize call as the latter can free the request. Fixes: c66c17a0f69b ("crypto: rk3288 - Remove prepare/unprepare request") Reported-by: Andrey Skvortsov <andrej.skvortzov@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Reviewed-by: Andrey Skvortsov <andrej.skvortzov@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/rockchip/rk3288_crypto_ahash.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
index 8c143180645e..29c9537216fa 100644
--- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c
+++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
@@ -332,12 +332,12 @@ static int rk_hash_run(struct crypto_engine *engine, void *breq)
theend:
pm_runtime_put_autosuspend(rkc->dev);
+ rk_hash_unprepare(engine, breq);
+
local_bh_disable();
crypto_finalize_hash_request(engine, breq, err);
local_bh_enable();
- rk_hash_unprepare(engine, breq);
-
return 0;
}