Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f54d632 authored by Qinglang Miao's avatar Qinglang Miao Committed by Connor O'Brien
Browse files

UPSTREAM: scsi: ufshcd: Fix missing destroy_workqueue()

Add the missing destroy_workqueue() before return from ufshcd_init in the
error handling case as well as in ufshcd_remove.

Link: https://lore.kernel.org/r/20201110074223.41280-1-miaoqinglang@huawei.com


Fixes: 4db7a2360597 ("scsi: ufs: Fix concurrency of error handler and other error recovery paths")
Suggested-by: default avatarAvri Altman <Avri.Altman@wdc.com>
Reviewed-by: default avatarAsutosh Das <asutoshd@codeaurora.org>
Reviewed-by: default avatarAvri Altman <avri.altman@wdc.com>
Signed-off-by: default avatarQinglang Miao <miaoqinglang@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 2e6f11a797a24d1e2141a214a6dd6dfbe709f55d)
Bug: 187129171
Signed-off-by: default avatarConnor O'Brien <connoro@google.com>
Change-Id: I2db2a6c6fb22b1e780ec7e167940d7104aaae267
parent e6d3c97b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -9025,6 +9025,7 @@ void ufshcd_remove(struct ufs_hba *hba)
	ufs_bsg_remove(hba);
	ufs_sysfs_remove_nodes(hba->dev);
	scsi_remove_host(hba->host);
	destroy_workqueue(hba->eh_wq);
	/* disable interrupts */
	ufshcd_disable_intr(hba, hba->intr_mask);
	ufshcd_hba_stop(hba, true);
@@ -9296,6 +9297,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);