]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
pwm: Clear chip_data in pwm_put()
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 25 Mar 2019 09:49:33 +0000 (10:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 14:27:13 +0000 (15:27 +0100)
commit e926b12c611c2095c7976e2ed31753ad6eb5ff1a upstream.

After a PWM is disposed by its user the per chip data becomes invalid.
Clear the data in common code instead of the device drivers to get
consistent behaviour. Before this patch only three of nine drivers
cleaned up here.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/pwm/core.c
drivers/pwm/pwm-samsung.c

index 6911f966230010edc3c34be0091b2cb25be9fee7..5e582099ebaa3f5c04de21fbe135d42ed4ab6fa0 100644 (file)
@@ -781,6 +781,7 @@ void pwm_put(struct pwm_device *pwm)
        if (pwm->chip->ops->free)
                pwm->chip->ops->free(pwm->chip, pwm);
 
+       pwm_set_chip_data(pwm, NULL);
        pwm->label = NULL;
 
        module_put(pwm->chip->ops->owner);
index ada2d326dc3e6117f9543f5283ac09c90bcb22ad..42f270ef2f7b2c7ab2d298fba4db6e92fdef7cef 100644 (file)
@@ -226,7 +226,6 @@ static int pwm_samsung_request(struct pwm_chip *chip, struct pwm_device *pwm)
 static void pwm_samsung_free(struct pwm_chip *chip, struct pwm_device *pwm)
 {
        devm_kfree(chip->dev, pwm_get_chip_data(pwm));
-       pwm_set_chip_data(pwm, NULL);
 }
 
 static int pwm_samsung_enable(struct pwm_chip *chip, struct pwm_device *pwm)