Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: David Lechner <dlechner@baylibre.com>
Link: https://lore.kernel.org/r/66a6f562-1fdd-4e45-995a-e7995432aa0c@baylibre.com
Fixes: 4c56b1434b81 ("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: David Lechner <dlechner@baylibre.com>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

+3 -1
+3 -1
drivers/pwm/core.c
··· 1525 1525 */ 1526 1526 void pwm_put(struct pwm_device *pwm) 1527 1527 { 1528 - struct pwm_chip *chip = pwm->chip; 1528 + struct pwm_chip *chip; 1529 1529 1530 1530 if (!pwm) 1531 1531 return; 1532 + 1533 + chip = pwm->chip; 1532 1534 1533 1535 mutex_lock(&pwm_lock); 1534 1536