rtc: rtc-s35390a: use devm_*() functions

Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jingoo Han 2013-04-29 16:20:53 -07:00 committed by Linus Torvalds
parent b8a4b4e2f7
commit b4cd3d6a77
1 changed files with 6 additions and 8 deletions

View File

@ -338,7 +338,8 @@ static int s35390a_probe(struct i2c_client *client,
goto exit; goto exit;
} }
s35390a = kzalloc(sizeof(struct s35390a), GFP_KERNEL); s35390a = devm_kzalloc(&client->dev, sizeof(struct s35390a),
GFP_KERNEL);
if (!s35390a) { if (!s35390a) {
err = -ENOMEM; err = -ENOMEM;
goto exit; goto exit;
@ -386,8 +387,9 @@ static int s35390a_probe(struct i2c_client *client,
device_set_wakeup_capable(&client->dev, 1); device_set_wakeup_capable(&client->dev, 1);
s35390a->rtc = rtc_device_register(s35390a_driver.driver.name, s35390a->rtc = devm_rtc_device_register(&client->dev,
&client->dev, &s35390a_rtc_ops, THIS_MODULE); s35390a_driver.driver.name,
&s35390a_rtc_ops, THIS_MODULE);
if (IS_ERR(s35390a->rtc)) { if (IS_ERR(s35390a->rtc)) {
err = PTR_ERR(s35390a->rtc); err = PTR_ERR(s35390a->rtc);
@ -399,7 +401,6 @@ static int s35390a_probe(struct i2c_client *client,
for (i = 1; i < 8; ++i) for (i = 1; i < 8; ++i)
if (s35390a->client[i]) if (s35390a->client[i])
i2c_unregister_device(s35390a->client[i]); i2c_unregister_device(s35390a->client[i]);
kfree(s35390a);
exit: exit:
return err; return err;
@ -408,15 +409,12 @@ static int s35390a_probe(struct i2c_client *client,
static int s35390a_remove(struct i2c_client *client) static int s35390a_remove(struct i2c_client *client)
{ {
unsigned int i; unsigned int i;
struct s35390a *s35390a = i2c_get_clientdata(client); struct s35390a *s35390a = i2c_get_clientdata(client);
for (i = 1; i < 8; ++i) for (i = 1; i < 8; ++i)
if (s35390a->client[i]) if (s35390a->client[i])
i2c_unregister_device(s35390a->client[i]); i2c_unregister_device(s35390a->client[i]);
rtc_device_unregister(s35390a->rtc);
kfree(s35390a);
return 0; return 0;
} }