cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
 
-       if (cpu_reg) {
+       if (!IS_ERR(cpu_reg)) {
                rcu_read_lock();
                opp = opp_find_freq_ceil(cpu_dev, &freq_Hz);
                if (IS_ERR(opp)) {
                 freqs.new / 1000, volt ? volt / 1000 : -1);
 
        /* scaling up?  scale voltage before frequency */
-       if (cpu_reg && freqs.new > freqs.old) {
+       if (!IS_ERR(cpu_reg) && freqs.new > freqs.old) {
                ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
                if (ret) {
                        pr_err("failed to scale voltage up: %d\n", ret);
        ret = clk_set_rate(cpu_clk, freq_exact);
        if (ret) {
                pr_err("failed to set clock rate: %d\n", ret);
-               if (cpu_reg)
+               if (!IS_ERR(cpu_reg))
                        regulator_set_voltage_tol(cpu_reg, volt_old, tol);
                freqs.new = freqs.old;
                goto post_notify;
        }
 
        /* scaling down?  scale voltage after frequency */
-       if (cpu_reg && freqs.new < freqs.old) {
+       if (!IS_ERR(cpu_reg) && freqs.new < freqs.old) {
                ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
                if (ret) {
                        pr_err("failed to scale voltage down: %d\n", ret);
                }
                pr_warn("failed to get cpu0 regulator: %ld\n",
                        PTR_ERR(cpu_reg));
-               cpu_reg = NULL;
        }
 
        cpu_clk = devm_clk_get(cpu_dev, NULL);