]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pwm: Use guards for export->lock instead of explicity mutex_lock + mutex_unlock
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Thu, 27 Jun 2024 20:31:20 +0000 (22:31 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Wed, 10 Jul 2024 15:53:52 +0000 (17:53 +0200)
With the compiler caring for unlocking the mutex several functions can
be simplified. Benefit from that.

There is just one caller left for mutex_lock(&export->lock). The code
flow is too complicated there to convert it to the compiler assisted
variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/210010f2e579a92476462726e18e0135f6854909.1719520143.git.u.kleine-koenig@baylibre.com
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
drivers/pwm/core.c

index bce42fbbe2c3cb98e01220b93b2e7c5713d45a8b..3df8397d7b2b3c9af784b266b4cd412547452926 100644 (file)
@@ -503,11 +503,11 @@ static ssize_t period_store(struct device *pwm_dev,
        if (ret)
                return ret;
 
-       mutex_lock(&export->lock);
+       guard(mutex)(&export->lock);
+
        pwm_get_state(pwm, &state);
        state.period = val;
        ret = pwm_apply_might_sleep(pwm, &state);
-       mutex_unlock(&export->lock);
 
        return ret ? : size;
 }
@@ -538,11 +538,11 @@ static ssize_t duty_cycle_store(struct device *pwm_dev,
        if (ret)
                return ret;
 
-       mutex_lock(&export->lock);
+       guard(mutex)(&export->lock);
+
        pwm_get_state(pwm, &state);
        state.duty_cycle = val;
        ret = pwm_apply_might_sleep(pwm, &state);
-       mutex_unlock(&export->lock);
 
        return ret ? : size;
 }
@@ -572,7 +572,7 @@ static ssize_t enable_store(struct device *pwm_dev,
        if (ret)
                return ret;
 
-       mutex_lock(&export->lock);
+       guard(mutex)(&export->lock);
 
        pwm_get_state(pwm, &state);
 
@@ -584,14 +584,11 @@ static ssize_t enable_store(struct device *pwm_dev,
                state.enabled = true;
                break;
        default:
-               ret = -EINVAL;
-               goto unlock;
+               return -EINVAL;
        }
 
        ret = pwm_apply_might_sleep(pwm, &state);
 
-unlock:
-       mutex_unlock(&export->lock);
        return ret ? : size;
 }
 
@@ -635,11 +632,11 @@ static ssize_t polarity_store(struct device *pwm_dev,
        else
                return -EINVAL;
 
-       mutex_lock(&export->lock);
+       guard(mutex)(&export->lock);
+
        pwm_get_state(pwm, &state);
        state.polarity = polarity;
        ret = pwm_apply_might_sleep(pwm, &state);
-       mutex_unlock(&export->lock);
 
        return ret ? : size;
 }