diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2012-03-23 18:02:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 19:58:34 -0400 |
commit | 920c4f4c3651855f888ec708ecc656ba10dd8f1d (patch) | |
tree | 2c8f540641caba6b9b95b337d06cd3b9e644f603 /drivers/leds | |
parent | 3a2fd4a14112452eb5c1a079ac8b3f4842762afe (diff) |
drivers/leds/leds-tca6507.c: cleanup error handling in tca6507_probe()
Just a small tidy-up.
1) There is a NULL dereference if the tca allocation fails.
2) The call to cancel_work_sync() isn't needed because we haven't
scheduled any work.
3) The call to i2c_set_clientdata() isn't needed because the core
handles that automatically if probe() fails.
4) I added some curly braces for style reasons.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Acked-by: NeilBrown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/leds')
-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 | } |