Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jingoo Han and committed by
Linus Torvalds
b4cd3d6a b8a4b4e2

+6 -8
+6 -8
drivers/rtc/rtc-s35390a.c
··· 338 338 goto exit; 339 339 } 340 340 341 - s35390a = kzalloc(sizeof(struct s35390a), GFP_KERNEL); 341 + s35390a = devm_kzalloc(&client->dev, sizeof(struct s35390a), 342 + GFP_KERNEL); 342 343 if (!s35390a) { 343 344 err = -ENOMEM; 344 345 goto exit; ··· 387 386 388 387 device_set_wakeup_capable(&client->dev, 1); 389 388 390 - s35390a->rtc = rtc_device_register(s35390a_driver.driver.name, 391 - &client->dev, &s35390a_rtc_ops, THIS_MODULE); 389 + s35390a->rtc = devm_rtc_device_register(&client->dev, 390 + s35390a_driver.driver.name, 391 + &s35390a_rtc_ops, THIS_MODULE); 392 392 393 393 if (IS_ERR(s35390a->rtc)) { 394 394 err = PTR_ERR(s35390a->rtc); ··· 401 399 for (i = 1; i < 8; ++i) 402 400 if (s35390a->client[i]) 403 401 i2c_unregister_device(s35390a->client[i]); 404 - kfree(s35390a); 405 402 406 403 exit: 407 404 return err; ··· 409 408 static int s35390a_remove(struct i2c_client *client) 410 409 { 411 410 unsigned int i; 412 - 413 411 struct s35390a *s35390a = i2c_get_clientdata(client); 412 + 414 413 for (i = 1; i < 8; ++i) 415 414 if (s35390a->client[i]) 416 415 i2c_unregister_device(s35390a->client[i]); 417 - 418 - rtc_device_unregister(s35390a->rtc); 419 - kfree(s35390a); 420 416 421 417 return 0; 422 418 }