{
        struct opp_table *opp_table;
        struct dev_pm_opp *opp;
-       struct regulator *reg, **regulators;
+       struct regulator *reg;
        unsigned long latency_ns = 0;
        int ret, i, count;
        struct {
        if (!count)
                goto put_opp_table;
 
-       regulators = kmalloc_array(count, sizeof(*regulators), GFP_KERNEL);
-       if (!regulators)
-               goto put_opp_table;
-
        uV = kmalloc_array(count, sizeof(*uV), GFP_KERNEL);
        if (!uV)
-               goto free_regulators;
-
-       memcpy(regulators, opp_table->regulators, count * sizeof(*regulators));
+               goto put_opp_table;
 
        mutex_lock(&opp_table->lock);
 
         * isn't freed, while we are executing this routine.
         */
        for (i = 0; i < count; i++) {
-               reg = regulators[i];
+               reg = opp_table->regulators[i];
                ret = regulator_set_voltage_time(reg, uV[i].min, uV[i].max);
                if (ret > 0)
                        latency_ns += ret * 1000;
        }
 
        kfree(uV);
-free_regulators:
-       kfree(regulators);
 put_opp_table:
        dev_pm_opp_put_opp_table(opp_table);