Commit c6837aa1 authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

pwm: Don't check pointer for being non-NULL after use



After assigning chip = pwm->chip; the compiler is free to assume that
pwm is non-NULL and so can optimize out the check for pwm against NULL.

While it's probably a programming error to pass a NULL pointer to
pwm_put() this shouldn't be dropped without careful consideration and
wasn't intended.

So assign chip only after the NULL check.

Reported-by: default avatarDavid Lechner <dlechner@baylibre.com>
Link: https://lore.kernel.org/r/66a6f562-1fdd-4e45-995a-e7995432aa0c@baylibre.com
Fixes: 4c56b143 ("pwm: Add a struct device to struct pwm_chip")
Link: https://lore.kernel.org/r/20240329101648.544155-2-u.kleine-koenig@pengutronix.de


Reviewed-by: default avatarDavid Lechner <dlechner@baylibre.com>
Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent 4c56b143
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -1525,11 +1525,13 @@ EXPORT_SYMBOL_GPL(pwm_get);
 */
void pwm_put(struct pwm_device *pwm)
{
	struct pwm_chip *chip = pwm->chip;
	struct pwm_chip *chip;

	if (!pwm)
		return;

	chip = pwm->chip;

	mutex_lock(&pwm_lock);

	if (!test_and_clear_bit(PWMF_REQUESTED, &pwm->flags)) {