]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-5.10/crypto-qat-fix-double-free-during-reset.patch
5.10-stable patches
[thirdparty/kernel/stable-queue.git] / queue-5.10 / crypto-qat-fix-double-free-during-reset.patch
CommitLineData
b7ca0ba0
SL
1From 12efba42e382567af2d4a1a76bbf5306599609c8 Mon Sep 17 00:00:00 2001
2From: Sasha Levin <sashal@kernel.org>
3Date: Mon, 9 Oct 2023 13:27:19 +0100
4Subject: crypto: qat - fix double free during reset
5
6From: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
7
8[ Upstream commit 01aed663e6c421aeafc9c330bda630976b50a764 ]
9
10There is no need to free the reset_data structure if the recovery is
11unsuccessful and the reset is synchronous. The function
12adf_dev_aer_schedule_reset() handles the cleanup properly. Only
13asynchronous resets require such structure to be freed inside the reset
14worker.
15
16Fixes: d8cba25d2c68 ("crypto: qat - Intel(R) QAT driver framework")
17Signed-off-by: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
18Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
19Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
20Stable-dep-of: 7d42e097607c ("crypto: qat - resolve race condition during AER recovery")
21Signed-off-by: Sasha Levin <sashal@kernel.org>
22---
23 drivers/crypto/qat/qat_common/adf_aer.c | 3 ++-
24 1 file changed, 2 insertions(+), 1 deletion(-)
25
26diff --git a/drivers/crypto/qat/qat_common/adf_aer.c b/drivers/crypto/qat/qat_common/adf_aer.c
27index d2ae293d0df6a..d1a7809c51c0a 100644
28--- a/drivers/crypto/qat/qat_common/adf_aer.c
29+++ b/drivers/crypto/qat/qat_common/adf_aer.c
30@@ -95,7 +95,8 @@ static void adf_device_reset_worker(struct work_struct *work)
31 if (adf_dev_init(accel_dev) || adf_dev_start(accel_dev)) {
32 /* The device hanged and we can't restart it so stop here */
33 dev_err(&GET_DEV(accel_dev), "Restart device failed\n");
34- kfree(reset_data);
35+ if (reset_data->mode == ADF_DEV_RESET_ASYNC)
36+ kfree(reset_data);
37 WARN(1, "QAT: device restart failed. Device is unusable\n");
38 return;
39 }
40--
412.43.0
42