|
@@ -687,10 +687,9 @@ static int __devinit tca6507_probe(struct i2c_client *client,
|
|
|
NUM_LEDS);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
- err = -ENOMEM;
|
|
|
tca = kzalloc(sizeof(*tca), GFP_KERNEL);
|
|
|
if (!tca)
|
|
|
- goto exit;
|
|
|
+ return -ENOMEM;
|
|
|
|
|
|
tca->client = client;
|
|
|
INIT_WORK(&tca->work, tca6507_work);
|
|
@@ -724,11 +723,10 @@ static int __devinit tca6507_probe(struct i2c_client *client,
|
|
|
|
|
|
return 0;
|
|
|
exit:
|
|
|
- while (i--)
|
|
|
+ while (i--) {
|
|
|
if (tca->leds[i].led_cdev.name)
|
|
|
led_classdev_unregister(&tca->leds[i].led_cdev);
|
|
|
- cancel_work_sync(&tca->work);
|
|
|
- i2c_set_clientdata(client, NULL);
|
|
|
+ }
|
|
|
kfree(tca);
|
|
|
return err;
|
|
|
}
|