leds: Simplify logic in leds-ams-delta

Simplify logic in leds-ams-delta after various new drivers
writers misunderstood it.

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>

+10 -10
+10 -10
drivers/leds/leds-ams-delta.c
··· 107 107 108 108 static int ams_delta_led_probe(struct platform_device *pdev) 109 109 { 110 - int i; 111 - int ret; 110 + int i, ret; 112 111 113 - for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) { 112 + for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) { 114 113 ret = led_classdev_register(&pdev->dev, 115 114 &ams_delta_leds[i].cdev); 115 + if (ret < 0) 116 + goto fail; 116 117 } 117 118 118 - if (ret < 0 && i > 1) { 119 - for (i = i - 2; i >= 0; i--) 120 - led_classdev_unregister(&ams_delta_leds[i].cdev); 121 - } 122 - 123 - return ret; 119 + return 0; 120 + fail: 121 + while (--i >= 0) 122 + led_classdev_unregister(&ams_delta_leds[i].cdev); 123 + return ret; 124 124 } 125 125 126 126 static int ams_delta_led_remove(struct platform_device *pdev) 127 127 { 128 128 int i; 129 129 130 - for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--) 130 + for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--) 131 131 led_classdev_unregister(&ams_delta_leds[i].cdev); 132 132 133 133 return 0;