> > Add the missing destroy_workqueue() before return from > ufshcd_init in the error handling case. It seems that > exit_gating is an appropriate place. > > Fixes: 4db7a2360597 ("scsi: ufs: Fix concurrency of error handler and other > error recovery paths") > Signed-off-by: Qinglang Miao <miaoqinglang@xxxxxxxxxx> > --- > drivers/scsi/ufs/ufshcd.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index b8f573a02713..9eaa0eaca374 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -9206,6 +9206,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem > *mmio_base, unsigned int irq) > exit_gating: > ufshcd_exit_clk_scaling(hba); > ufshcd_exit_clk_gating(hba); > + destroy_workqueue(hba->eh_wq); Maybe also in ufshcd_remove?