Message ID | 20210325083418.153771-1-giovanni.cabiddu@intel.com |
---|---|
State | Accepted |
Commit | 83dc1173d73f80cbce2fee4d308f51f87b2f26ae |
Headers | show |
Series | crypto: qat - fix error path in adf_isr_resource_alloc() | expand |
On Thu, Mar 25, 2021 at 08:34:18AM +0000, Giovanni Cabiddu wrote: > The function adf_isr_resource_alloc() is not unwinding correctly in case > of error. > This patch fixes the error paths and propagate the errors to the caller. > > Fixes: 7afa232e76ce ("crypto: qat - Intel(R) QAT DH895xcc accelerator") > Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com> > Reviewed-by: Marco Chiappero <marco.chiappero@intel.com> > --- > drivers/crypto/qat/qat_common/adf_isr.c | 29 ++++++++++++++++++------- > 1 file changed, 21 insertions(+), 8 deletions(-) Patch applied. Thanks. -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff --git a/drivers/crypto/qat/qat_common/adf_isr.c b/drivers/crypto/qat/qat_common/adf_isr.c index c45853463530..e3ad5587be49 100644 --- a/drivers/crypto/qat/qat_common/adf_isr.c +++ b/drivers/crypto/qat/qat_common/adf_isr.c @@ -291,19 +291,32 @@ int adf_isr_resource_alloc(struct adf_accel_dev *accel_dev) ret = adf_isr_alloc_msix_entry_table(accel_dev); if (ret) - return ret; - if (adf_enable_msix(accel_dev)) goto err_out; - if (adf_setup_bh(accel_dev)) - goto err_out; + ret = adf_enable_msix(accel_dev); + if (ret) + goto err_free_msix_table; - if (adf_request_irqs(accel_dev)) - goto err_out; + ret = adf_setup_bh(accel_dev); + if (ret) + goto err_disable_msix; + + ret = adf_request_irqs(accel_dev); + if (ret) + goto err_cleanup_bh; return 0; + +err_cleanup_bh: + adf_cleanup_bh(accel_dev); + +err_disable_msix: + adf_disable_msix(&accel_dev->accel_pci_dev); + +err_free_msix_table: + adf_isr_free_msix_entry_table(accel_dev); + err_out: - adf_isr_resource_free(accel_dev); - return -EFAULT; + return ret; } EXPORT_SYMBOL_GPL(adf_isr_resource_alloc);