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

Signed-off-by: Jingoo Han <[email protected]>
---
 drivers/rtc/rtc-pcf50633.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c
index e9f3135..e6b6911 100644
--- a/drivers/rtc/rtc-pcf50633.c
+++ b/drivers/rtc/rtc-pcf50633.c
@@ -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;
 }
 
-- 
1.7.2.5


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to