Message ID | 20201109091522.55989-1-miaoqinglang@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | scsi: ufshcd: fix missing destroy_workqueue() on error in ufshcd_init | expand |
> > 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@huawei.com> > --- > 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?
在 2020/11/9 17:40, Avri Altman 写道: >> >> 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@huawei.com> >> --- >> 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? > . You're right Avri, thanks! I'm gonna send a v2 on this patch to cover ufshcd_remove. >
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); out_disable: hba->is_irq_enabled = false; ufshcd_hba_exit(hba);
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@huawei.com> --- drivers/scsi/ufs/ufshcd.c | 1 + 1 file changed, 1 insertion(+)