leds: leds-ss4200: fix led_classdev_unregister twice in error handling
authorAxel Lin <axel.lin@gmail.com>
Mon, 17 May 2010 05:42:43 +0000 (13:42 +0800)
committerRichard Purdie <rpurdie@linux.intel.com>
Wed, 26 May 2010 12:07:56 +0000 (13:07 +0100)
In current implementation, if device_create_file failed in register_nasgpio_led,
led_classdev_unregister will be executed twice.
( in register_nasgpio_led it calls led_classdev_unregister before return and in nas_gpio_init out_err )

This patch fixes it by only unregistering those that were successfully registered in out_err.
( not including last failed register_nasgpio_led call )

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Dave Hansen <dave@sr71.net>
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
drivers/leds/leds-ss4200.c

index 51477ec7139179dd2dec53795de21273453f2c1c..a688293abd0b43a0f9e8135d0ce4d43812307f0a 100644 (file)
@@ -534,7 +534,7 @@ static int __init nas_gpio_init(void)
        set_power_light_amber_noblink();
        return 0;
 out_err:
-       for (; i >= 0; i--)
+       for (i--; i >= 0; i--)
                unregister_nasgpio_led(i);
        pci_unregister_driver(&nas_gpio_pci_driver);
        return ret;