if (!np)
                goto out;
 
-       INIT_LIST_HEAD(&hba->clk_list_head);
-
        cnt = of_property_count_strings(np, "clock-names");
        if (!cnt || (cnt == -EINVAL)) {
                dev_info(dev, "%s: Unable to find clocks, assuming enabled\n",
 
        struct ufs_clk_info *clki;
        struct list_head *head = &hba->clk_list_head;
 
-       if (!head || list_empty(head))
+       if (list_empty(head))
                return;
 
        list_for_each_entry(clki, head, list) {
        ktime_t start = ktime_get();
        bool clk_state_changed = false;
 
-       if (!head || list_empty(head))
+       if (list_empty(head))
                goto out;
 
        ret = ufshcd_vops_clk_scale_notify(hba, scale_up, PRE_CHANGE);
        struct ufs_clk_info *clki;
        struct list_head *head = &hba->clk_list_head;
 
-       if (!head || list_empty(head))
+       if (list_empty(head))
                return false;
 
        list_for_each_entry(clki, head, list) {
        ktime_t start = ktime_get();
        bool clk_state_changed = false;
 
-       if (!head || list_empty(head))
+       if (list_empty(head))
                goto out;
 
        ret = ufshcd_vops_setup_clocks(hba, on, PRE_CHANGE);
        struct device *dev = hba->dev;
        struct list_head *head = &hba->clk_list_head;
 
-       if (!head || list_empty(head))
+       if (list_empty(head))
                goto out;
 
        list_for_each_entry(clki, head, list) {
        hba->dev = dev;
        *hba_handle = hba;
 
+       INIT_LIST_HEAD(&hba->clk_list_head);
+
 out_error:
        return err;
 }