rtc: rtc-pcf50633: use devm_*() functions
authorJingoo Han <jg1.han@samsung.com>
Mon, 29 Apr 2013 23:20:48 +0000 (16:20 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 30 Apr 2013 01:28:38 +0000 (18:28 -0700)
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>
drivers/rtc/rtc-pcf50633.c

index e9f3135d305ff35eb4594dd6e35dfaee93a5c35a..e6b6911c8e0528b326e6a0e93050510f81735b52 100644 (file)
@@ -252,20 +252,17 @@ static int pcf50633_rtc_probe(struct platform_device *pdev)
 {
        struct pcf50633_rtc *rtc;
 
-       rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
+       rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
        if (!rtc)
                return -ENOMEM;
 
        rtc->pcf = dev_to_pcf50633(pdev->dev.parent);
        platform_set_drvdata(pdev, rtc);
-       rtc->rtc_dev = rtc_device_register("pcf50633-rtc", &pdev->dev,
+       rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, "pcf50633-rtc",
                                &pcf50633_rtc_ops, THIS_MODULE);
 
-       if (IS_ERR(rtc->rtc_dev)) {
-               int ret =  PTR_ERR(rtc->rtc_dev);
-               kfree(rtc);
-               return ret;
-       }
+       if (IS_ERR(rtc->rtc_dev))
+               return PTR_ERR(rtc->rtc_dev);
 
        pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM,
                                        pcf50633_rtc_irq, rtc);
@@ -277,12 +274,8 @@ static int pcf50633_rtc_remove(struct platform_device *pdev)
        struct pcf50633_rtc *rtc;
 
        rtc = platform_get_drvdata(pdev);
-
        pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM);
 
-       rtc_device_unregister(rtc->rtc_dev);
-       kfree(rtc);
-
        return 0;
 }