On Fri, Mar 12, 2021 at 11:22:02AM -0500, Tong Zhang wrote: > adf_vf_isr_resource_alloc() is not unwinding correctly when error > happens and it trys to release uninitialized resources. > To fix this, only release initialized resources. > > [ 1.792845] Trying to free already-free IRQ 11 > [ 1.793091] WARNING: CPU: 0 PID: 182 at kernel/irq/manage.c:1821 free_irq+0x202/0x380 > [ 1.801340] Call Trace: > [ 1.801477] adf_vf_isr_resource_free+0x32/0xb0 [intel_qat] > [ 1.801785] adf_vf_isr_resource_alloc+0x14d/0x150 [intel_qat] > [ 1.802105] adf_dev_init+0xba/0x140 [intel_qat] > > Signed-off-by: Tong Zhang <ztong0001@xxxxxxxxx> > Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx> I would add also a Fixes tag: Fixes: dd0f368398ea ("crypto: qat - Add qat dh895xcc VF driver") Minor nit, typo in commit message: dont --> don't/do not Apart from that Acked-by: Giovanni Cabiddu <giovanni.cabiddu@xxxxxxxxx> -- Giovanni > --- > drivers/crypto/qat/qat_common/adf_vf_isr.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/drivers/crypto/qat/qat_common/adf_vf_isr.c b/drivers/crypto/qat/qat_common/adf_vf_isr.c > index 38d316a42ba6..888388acb6bd 100644 > --- a/drivers/crypto/qat/qat_common/adf_vf_isr.c > +++ b/drivers/crypto/qat/qat_common/adf_vf_isr.c > @@ -261,17 +261,26 @@ int adf_vf_isr_resource_alloc(struct adf_accel_dev *accel_dev) > goto err_out; > > if (adf_setup_pf2vf_bh(accel_dev)) > - goto err_out; > + goto err_disable_msi; > > if (adf_setup_bh(accel_dev)) > - goto err_out; > + goto err_cleanup_pf2vf_bh; > > if (adf_request_msi_irq(accel_dev)) > - goto err_out; > + goto err_cleanup_bh; > > return 0; > + > +err_cleanup_bh: > + adf_cleanup_bh(accel_dev); > + > +err_cleanup_pf2vf_bh: > + adf_cleanup_pf2vf_bh(accel_dev); > + > +err_disable_msi: > + adf_disable_msi(accel_dev); > + > err_out: > - adf_vf_isr_resource_free(accel_dev); > return -EFAULT; > } > EXPORT_SYMBOL_GPL(adf_vf_isr_resource_alloc); > -- > 2.25.1 >