From: Uwe Kleine-König Date: Tue, 25 Jul 2023 08:10:04 +0000 (+0200) Subject: pwm: Fix order of freeing resources in pwmchip_remove() X-Git-Tag: microblaze-v6.8~507^2~6 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=86eed2a10304a9efe56c2b192b914b377cad260d;p=linux-2.6-microblaze.git pwm: Fix order of freeing resources in pwmchip_remove() pwmchip_add() calls of_pwmchip_add() only after adding the chip to pwm_chips and releasing pwm_lock. So the proper order in pwmchip_remove() is to call of_pwmchip_remove() before taking the mutex and removing the chip from pwm_chips. This way pwmchip_remove() releases the resources in reverse order compared to pwmchip_add() requesting them. Signed-off-by: Uwe Kleine-König Signed-off-by: Thierry Reding --- diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index b4703dfc9e4d..dc66e3405bf5 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -318,13 +318,13 @@ void pwmchip_remove(struct pwm_chip *chip) { pwmchip_sysfs_unexport(chip); + if (IS_ENABLED(CONFIG_OF)) + of_pwmchip_remove(chip); + mutex_lock(&pwm_lock); list_del_init(&chip->list); - if (IS_ENABLED(CONFIG_OF)) - of_pwmchip_remove(chip); - free_pwms(chip); mutex_unlock(&pwm_lock);