err_s_clk:
        clk_put(pm->clock);
+       pm->clock = NULL;
 err_p_ip_clk:
        clk_put(pm->clock_gate);
+       pm->clock_gate = NULL;
 err_g_ip_clk:
        return ret;
 }
            pm->clock) {
                clk_disable_unprepare(pm->clock);
                clk_put(pm->clock);
+               pm->clock = NULL;
        }
        clk_unprepare(pm->clock_gate);
        clk_put(pm->clock_gate);
+       pm->clock_gate = NULL;
 #ifdef CONFIG_PM
        pm_runtime_disable(pm->device);
 #endif
 
 int s5p_mfc_clock_on(void)
 {
-       int ret;
+       int ret = 0;
 #ifdef CLK_DEBUG
        atomic_inc(&clk_ref);
        mfc_debug(3, "+ %d\n", atomic_read(&clk_ref));
 #endif
-       ret = clk_enable(pm->clock_gate);
+       if (!IS_ERR_OR_NULL(pm->clock_gate))
+               ret = clk_enable(pm->clock_gate);
        return ret;
 }
 
        atomic_dec(&clk_ref);
        mfc_debug(3, "- %d\n", atomic_read(&clk_ref));
 #endif
-       clk_disable(pm->clock_gate);
+       if (!IS_ERR_OR_NULL(pm->clock_gate))
+               clk_disable(pm->clock_gate);
 }
 
 int s5p_mfc_power_on(void)