In ufshcd_hba_exit() the clock gating workqueue is always destroyed when clock gating is supported. However the workqueue pointer is NULL when ufshcd_init() fails before the workqueue is created. Only destroy the workqueue if it exists. Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> --- drivers/scsi/ufs/ufshcd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 397081d320b1..401f7dbe2981 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7190,7 +7190,8 @@ static void ufshcd_hba_exit(struct ufs_hba *hba) if (ufshcd_is_clkscaling_supported(hba)) { if (hba->devfreq) ufshcd_suspend_clkscaling(hba); - destroy_workqueue(hba->clk_scaling.workq); + if (hba->clk_scaling.workq) + destroy_workqueue(hba->clk_scaling.workq); ufshcd_devfreq_remove(hba); } ufshcd_setup_clocks(hba, false); -- 2.18.0.597.ga71716f1ad-goog