summaryrefslogtreecommitdiffstats
path: root/drivers/leds/leds-ams-delta.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-23 16:07:32 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-23 16:07:32 -0700
commitea541686d8454efac4f2b5c0767affb12d4b6a52 (patch)
treeef0812fcc3e07c067042add6388146b3485c793e /drivers/leds/leds-ams-delta.c
parent0d876c6a96e2cabf8632e8066b617d9c2dec9518 (diff)
parent601a1b92ed3ce0025f7bec6fc591cceaef8d9d69 (diff)
Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds
* 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds: leds/acpi: Fix merge fallout from acpi_driver_data change leds: Simplify logic in leds-ams-delta leds: Fix trigger registration race leds: Fix leds-class.c comment leds: Add driver for HP harddisk protection LEDs leds: leds-pca955x - Mark pca955x_led_set() static leds: Remove uneeded leds-cm-x270 driver leds: Remove uneeded strlen calls leds: Add leds-wrap default-trigger leds: Make default trigger fields const leds: Add backlight LED trigger leds: da903x: Add support for LEDs found on DA9030/DA9034
Diffstat (limited to 'drivers/leds/leds-ams-delta.c')
-rw-r--r--drivers/leds/leds-ams-delta.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/leds/leds-ams-delta.c b/drivers/leds/leds-ams-delta.c
index 32c98b2efa3..1bd590bb3a6 100644
--- a/drivers/leds/leds-ams-delta.c
+++ b/drivers/leds/leds-ams-delta.c
@@ -107,27 +107,27 @@ static int ams_delta_led_resume(struct platform_device *dev)
static int ams_delta_led_probe(struct platform_device *pdev)
{
- int i;
- int ret;
+ int i, ret;
- for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) {
+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) {
ret = led_classdev_register(&pdev->dev,
&ams_delta_leds[i].cdev);
+ if (ret < 0)
+ goto fail;
}
- if (ret < 0 && i > 1) {
- for (i = i - 2; i >= 0; i--)
- led_classdev_unregister(&ams_delta_leds[i].cdev);
- }
-
- return ret;
+ return 0;
+fail:
+ while (--i >= 0)
+ led_classdev_unregister(&ams_delta_leds[i].cdev);
+ return ret;
}
static int ams_delta_led_remove(struct platform_device *pdev)
{
int i;
- for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--)
+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--)
led_classdev_unregister(&ams_delta_leds[i].cdev);
return 0;