diff options
-rw-r--r-- | drivers/leds/leds-tca6507.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds-tca6507.c index 133f89fb7071..ec06a8101e56 100644 --- a/drivers/leds/leds-tca6507.c +++ b/drivers/leds/leds-tca6507.c | |||
@@ -687,10 +687,9 @@ static int __devinit tca6507_probe(struct i2c_client *client, | |||
687 | NUM_LEDS); | 687 | NUM_LEDS); |
688 | return -ENODEV; | 688 | return -ENODEV; |
689 | } | 689 | } |
690 | err = -ENOMEM; | ||
691 | tca = kzalloc(sizeof(*tca), GFP_KERNEL); | 690 | tca = kzalloc(sizeof(*tca), GFP_KERNEL); |
692 | if (!tca) | 691 | if (!tca) |
693 | goto exit; | 692 | return -ENOMEM; |
694 | 693 | ||
695 | tca->client = client; | 694 | tca->client = client; |
696 | INIT_WORK(&tca->work, tca6507_work); | 695 | INIT_WORK(&tca->work, tca6507_work); |
@@ -724,11 +723,10 @@ static int __devinit tca6507_probe(struct i2c_client *client, | |||
724 | 723 | ||
725 | return 0; | 724 | return 0; |
726 | exit: | 725 | exit: |
727 | while (i--) | 726 | while (i--) { |
728 | if (tca->leds[i].led_cdev.name) | 727 | if (tca->leds[i].led_cdev.name) |
729 | led_classdev_unregister(&tca->leds[i].led_cdev); | 728 | led_classdev_unregister(&tca->leds[i].led_cdev); |
730 | cancel_work_sync(&tca->work); | 729 | } |
731 | i2c_set_clientdata(client, NULL); | ||
732 | kfree(tca); | 730 | kfree(tca); |
733 | return err; | 731 | return err; |
734 | } | 732 | } |