On Tue, Mar 12, 2019 at 12:16:34PM +0900, Yoshihiro Shimoda wrote: > diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c > index 1581f6a..2fdd6611 100644 > --- a/drivers/pwm/core.c > +++ b/drivers/pwm/core.c > @@ -311,10 +311,12 @@ int pwmchip_add_with_polarity(struct pwm_chip *chip, > if (IS_ENABLED(CONFIG_OF)) > of_pwmchip_add(chip); > > - pwmchip_sysfs_export(chip); > - > out: > mutex_unlock(&pwm_lock); > + > + if (!ret) > + pwmchip_sysfs_export(chip); > + > return ret; > } > EXPORT_SYMBOL_GPL(pwmchip_add_with_polarity); > @@ -368,10 +370,12 @@ int pwmchip_remove(struct pwm_chip *chip) > > free_pwms(chip); > > - pwmchip_sysfs_unexport(chip); > - > out: > mutex_unlock(&pwm_lock); > + > + if (!ret) > + pwmchip_sysfs_unexport(chip); > + I wonder if this needs to be done before free_pwms is called. Otherwise the pwmchip is already gone and then something is requested via sysfs. Also a comment about why it is important not to unexport while holding the lock would be great. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ |