On Tue, Nov 09, 2010 at 04:22:02PM +0800, Axel Lin wrote: > 2010/11/9 Jean Delvare : > > On Tue, 09 Nov 2010 13:18:39 +0800, Axel Lin wrote: > >> Remove sysfs entries before return -ENODEV. > >> > >> Signed-off-by: Axel Lin > >> --- > >>  drivers/hwmon/gpio-fan.c |    4 +++- > >>  1 files changed, 3 insertions(+), 1 deletions(-) > >> > >> diff --git a/drivers/hwmon/gpio-fan.c b/drivers/hwmon/gpio-fan.c > >> index aa701a1..d2e66b4 100644 > >> --- a/drivers/hwmon/gpio-fan.c > >> +++ b/drivers/hwmon/gpio-fan.c > >> @@ -388,11 +388,13 @@ static int fan_ctrl_init(struct gpio_fan_data *fan_data, > >>       fan_data->speed_index = get_fan_speed_index(fan_data); > >>       if (fan_data->speed_index < 0) { > >>               err = -ENODEV; > >> -             goto err_free_gpio; > >> +             goto err_remove_sysfs; > >>       } > >> > >>       return 0; > >> > >> +err_remove_sysfs: > >> +     sysfs_remove_group(&pdev->dev.kobj, &gpio_fan_ctrl_group); > >>  err_free_gpio: > >>       for (i = i - 1; i >= 0; i--) > >>               gpio_free(ctrl[i]); > > > > Oh, and while you're here, fan_alarm_init() needs some love as well. > > There's a "return 0" in the middle which clearly can't be correct. > I think this part is correct. see the comment: > /* > * If the alarm GPIO don't support interrupts, just leave > * without initializing the fail notification support. > */ > Yes, GPIO interrupts could not be supported. That's not an error case. Simon