]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.10/crypto-qat-fix-double-free-during-reset.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / queue-5.10 / crypto-qat-fix-double-free-during-reset.patch
1 From 12efba42e382567af2d4a1a76bbf5306599609c8 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Mon, 9 Oct 2023 13:27:19 +0100
4 Subject: crypto: qat - fix double free during reset
5
6 From: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
7
8 [ Upstream commit 01aed663e6c421aeafc9c330bda630976b50a764 ]
9
10 There is no need to free the reset_data structure if the recovery is
11 unsuccessful and the reset is synchronous. The function
12 adf_dev_aer_schedule_reset() handles the cleanup properly. Only
13 asynchronous resets require such structure to be freed inside the reset
14 worker.
15
16 Fixes: d8cba25d2c68 ("crypto: qat - Intel(R) QAT driver framework")
17 Signed-off-by: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
18 Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
19 Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
20 Stable-dep-of: 7d42e097607c ("crypto: qat - resolve race condition during AER recovery")
21 Signed-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
26 diff --git a/drivers/crypto/qat/qat_common/adf_aer.c b/drivers/crypto/qat/qat_common/adf_aer.c
27 index 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 --
41 2.43.0
42