···107107108108static int ams_delta_led_probe(struct platform_device *pdev)109109{110110- int i;111111- int ret;110110+ int i, ret;112111113113- for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) {112112+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) {114113 ret = led_classdev_register(&pdev->dev,115114 &ams_delta_leds[i].cdev);115115+ if (ret < 0)116116+ goto fail;116117 }117118118118- if (ret < 0 && i > 1) {119119- for (i = i - 2; i >= 0; i--)120120- led_classdev_unregister(&ams_delta_leds[i].cdev);121121- }122122-123123- return ret;119119+ return 0;120120+fail:121121+ while (--i >= 0)122122+ led_classdev_unregister(&ams_delta_leds[i].cdev);123123+ return ret; 124124}125125126126static int ams_delta_led_remove(struct platform_device *pdev)127127{128128 int i;129129130130- for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--)130130+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--)131131 led_classdev_unregister(&ams_delta_leds[i].cdev);132132133133 return 0;