diff options
author | Svyatoslav Pankratov <svyatoslav.pankratov@intel.com> | 2023-10-09 13:27:19 +0100 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2023-10-20 13:39:25 +0800 |
commit | 01aed663e6c421aeafc9c330bda630976b50a764 (patch) | |
tree | d618a0c98fd25d3a2a0f41102d4f1db189ec42c7 /drivers/crypto/intel | |
parent | fdcac2ddc759752cb4886138d89a8c06bf5086a7 (diff) | |
download | linux-01aed663e6c421aeafc9c330bda630976b50a764.tar.gz linux-01aed663e6c421aeafc9c330bda630976b50a764.tar.bz2 linux-01aed663e6c421aeafc9c330bda630976b50a764.zip |
crypto: qat - fix double free during reset
There is no need to free the reset_data structure if the recovery is
unsuccessful and the reset is synchronous. The function
adf_dev_aer_schedule_reset() handles the cleanup properly. Only
asynchronous resets require such structure to be freed inside the reset
worker.
Fixes: d8cba25d2c68 ("crypto: qat - Intel(R) QAT driver framework")
Signed-off-by: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/intel')
-rw-r--r-- | drivers/crypto/intel/qat/qat_common/adf_aer.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/crypto/intel/qat/qat_common/adf_aer.c b/drivers/crypto/intel/qat/qat_common/adf_aer.c index 04af32a2811c..a39e70bd4b21 100644 --- a/drivers/crypto/intel/qat/qat_common/adf_aer.c +++ b/drivers/crypto/intel/qat/qat_common/adf_aer.c @@ -92,7 +92,8 @@ static void adf_device_reset_worker(struct work_struct *work) if (adf_dev_restart(accel_dev)) { /* The device hanged and we can't restart it so stop here */ dev_err(&GET_DEV(accel_dev), "Restart device failed\n"); - kfree(reset_data); + if (reset_data->mode == ADF_DEV_RESET_ASYNC) + kfree(reset_data); WARN(1, "QAT: device restart failed. Device is unusable\n"); return; } |