diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index a60617210d93..c798f9220ed7 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -1299,9 +1299,11 @@ rockchip_dmcfreq_adjust_opp_table(struct rockchip_dmcfreq *dmcfreq) } freq_table = kzalloc(sizeof(*freq_table) * count, GFP_KERNEL); + if (!freq_table) + return -ENOMEM; opp_table = dev_pm_opp_get_opp_table(dev); - if (!opp_table) { - ret = -ENOMEM; + if (IS_ERR(opp_table)) { + ret = PTR_ERR(opp_table); goto out; } @@ -1344,7 +1346,7 @@ rockchip_dmcfreq_adjust_opp_table(struct rockchip_dmcfreq *dmcfreq) dmcfreq->freq_info_rate[i]); if (i == 0) { ret = -EPERM; - goto out; + break; } else { opp->available = false; dmcfreq->freq_count = i;