···107108static int ams_delta_led_probe(struct platform_device *pdev)109{110- int i;111- int ret;112113- for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) {114 ret = led_classdev_register(&pdev->dev,115 &ams_delta_leds[i].cdev);00116 }117118- 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;124}125126static int ams_delta_led_remove(struct platform_device *pdev)127{128 int i;129130- for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--)131 led_classdev_unregister(&ams_delta_leds[i].cdev);132133 return 0;
···107108static int ams_delta_led_probe(struct platform_device *pdev)109{110+ int i, ret;0111112+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) {113 ret = led_classdev_register(&pdev->dev,114 &ams_delta_leds[i].cdev);115+ if (ret < 0)116+ goto fail;117 }118119+ return 0;120+fail:121+ while (--i >= 0)122+ led_classdev_unregister(&ams_delta_leds[i].cdev);123+ return ret; 0124}125126static int ams_delta_led_remove(struct platform_device *pdev)127{128 int i;129130+ for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--)131 led_classdev_unregister(&ams_delta_leds[i].cdev);132133 return 0;