From 27f7384f3c756fbc33a38f1dddaf6f0456419892 Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Fri, 11 Oct 2019 18:01:15 +0800 Subject: [PATCH] MALI: bifrost_for_linux: Update OPP users to put reference According to commit 8a31d9d94297 ("PM / OPP: Update OPP users to put reference") Change-Id: I8bc69ec067623e05a610b816990e128e853d01a6 Signed-off-by: Tao Huang --- .../backend/gpu/mali_kbase_devfreq.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c index 0a961885b766..ea95e384955d 100644 --- a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c @@ -96,15 +96,13 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags) freq = *target_freq; - rcu_read_lock(); opp = devfreq_recommended_opp(dev, &freq, flags); if (IS_ERR(opp)) { - rcu_read_unlock(); dev_err(dev, "Failed to get opp (%ld)\n", PTR_ERR(opp)); return PTR_ERR(opp); } voltage = dev_pm_opp_get_voltage(opp); - rcu_read_unlock(); + dev_pm_opp_put(opp); nominal_freq = freq; /* @@ -205,28 +203,24 @@ static int kbase_devfreq_init_freq_table(struct kbase_device *kbdev, unsigned long freq; struct dev_pm_opp *opp; - rcu_read_lock(); count = dev_pm_opp_get_opp_count(kbdev->dev); if (count < 0) { - rcu_read_unlock(); return count; } - rcu_read_unlock(); dp->freq_table = kmalloc_array(count, sizeof(dp->freq_table[0]), GFP_KERNEL); if (!dp->freq_table) return -ENOMEM; - rcu_read_lock(); for (i = 0, freq = ULONG_MAX; i < count; i++, freq--) { opp = dev_pm_opp_find_freq_floor(kbdev->dev, &freq); if (IS_ERR(opp)) break; + dev_pm_opp_put(opp); dp->freq_table[i] = freq; } - rcu_read_unlock(); if (count != i) dev_warn(kbdev->dev, "Unable to enumerate all OPPs (%d!=%d\n", @@ -374,9 +368,9 @@ int kbase_devfreq_init(struct kbase_device *kbdev) } opp_rate = kbdev->current_freq; - rcu_read_lock(); - devfreq_recommended_opp(kbdev->dev, &opp_rate, 0); - rcu_read_unlock(); + opp = devfreq_recommended_opp(kbdev->dev, &opp_rate, 0); + if (!IS_ERR(opp)) + dev_pm_opp_put(opp); kbdev->devfreq->last_status.current_frequency = opp_rate; mali_mdevp.data = kbdev->devfreq;