Hi Uwe, On Tue, Mar 12, 2019 at 10:23 AM Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> wrote: > 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 > > @@ -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. The chip itself is not freed, only the pwms array inside, which is not needed for matching in pwmchip_sysfs_unexport(), right? > Also a comment about why it is important not to unexport while holding > the lock would be great. Thanks, good idea! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds