]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
clk: qcom: smd-rpm: simplify locking with guard()
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Fri, 23 Aug 2024 15:38:44 +0000 (17:38 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 26 Dec 2024 04:14:28 +0000 (22:14 -0600)
Simplify error handling (less gotos) over locks with guard().

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20240823-cleanup-h-guard-clk-qcom-v1-2-68bb9601c9dd@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/clk/qcom/clk-smd-rpm.c

index 45c5255bcd11bae69b83138ba1d5e52a8a3f3be8..b8cd9f7301194a539d5fb18f974a5600496a1032 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 2014, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/cleanup.h>
 #include <linux/clk-provider.h>
 #include <linux/err.h>
 #include <linux/export.h>
@@ -309,10 +310,10 @@ static void clk_smd_rpm_unprepare(struct clk_hw *hw)
        unsigned long active_rate, sleep_rate;
        int ret;
 
-       mutex_lock(&rpm_smd_clk_lock);
+       guard(mutex)(&rpm_smd_clk_lock);
 
        if (!r->rate)
-               goto out;
+               return;
 
        /* Take peer clock's rate into account only if it's enabled. */
        if (peer->enabled)
@@ -322,17 +323,14 @@ static void clk_smd_rpm_unprepare(struct clk_hw *hw)
        active_rate = r->branch ? !!peer_rate : peer_rate;
        ret = clk_smd_rpm_set_rate_active(r, active_rate);
        if (ret)
-               goto out;
+               return;
 
        sleep_rate = r->branch ? !!peer_sleep_rate : peer_sleep_rate;
        ret = clk_smd_rpm_set_rate_sleep(r, sleep_rate);
        if (ret)
-               goto out;
+               return;
 
        r->enabled = false;
-
-out:
-       mutex_unlock(&rpm_smd_clk_lock);
 }
 
 static int clk_smd_rpm_set_rate(struct clk_hw *hw, unsigned long rate,
@@ -345,10 +343,10 @@ static int clk_smd_rpm_set_rate(struct clk_hw *hw, unsigned long rate,
        unsigned long peer_rate = 0, peer_sleep_rate = 0;
        int ret = 0;
 
-       mutex_lock(&rpm_smd_clk_lock);
+       guard(mutex)(&rpm_smd_clk_lock);
 
        if (!r->enabled)
-               goto out;
+               return 0;
 
        to_active_sleep(r, rate, &this_rate, &this_sleep_rate);
 
@@ -360,19 +358,16 @@ static int clk_smd_rpm_set_rate(struct clk_hw *hw, unsigned long rate,
        active_rate = max(this_rate, peer_rate);
        ret = clk_smd_rpm_set_rate_active(r, active_rate);
        if (ret)
-               goto out;
+               return ret;
 
        sleep_rate = max(this_sleep_rate, peer_sleep_rate);
        ret = clk_smd_rpm_set_rate_sleep(r, sleep_rate);
        if (ret)
-               goto out;
+               return ret;
 
        r->rate = rate;
 
-out:
-       mutex_unlock(&rpm_smd_clk_lock);
-
-       return ret;
+       return 0;
 }
 
 static long clk_smd_rpm_round_rate(struct clk_hw *hw, unsigned long rate,