rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe()
authorGaosheng Cui <cuigaosheng1@huawei.com>
Wed, 23 Nov 2022 01:59:53 +0000 (09:59 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:53 +0000 (13:32 +0100)
[ Upstream commit 90cd5c88830140c9fade92a8027e0fb2c6e4cc49 ]

The pic32_rtc_enable(pdata, 0) and clk_disable_unprepare(pdata->clk)
should be called in the error handling of devm_rtc_allocate_device(),
so we should move devm_rtc_allocate_device earlier in pic32_rtc_probe()
to fix it.

Fixes: 6515e23b9fde ("rtc: pic32: convert to devm_rtc_allocate_device")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Link: https://lore.kernel.org/r/20221123015953.1998521-1-cuigaosheng1@huawei.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/rtc/rtc-pic32.c

index 7fb9145..fa351ac 100644 (file)
@@ -324,16 +324,16 @@ static int pic32_rtc_probe(struct platform_device *pdev)
 
        spin_lock_init(&pdata->alarm_lock);
 
+       pdata->rtc = devm_rtc_allocate_device(&pdev->dev);
+       if (IS_ERR(pdata->rtc))
+               return PTR_ERR(pdata->rtc);
+
        clk_prepare_enable(pdata->clk);
 
        pic32_rtc_enable(pdata, 1);
 
        device_init_wakeup(&pdev->dev, 1);
 
-       pdata->rtc = devm_rtc_allocate_device(&pdev->dev);
-       if (IS_ERR(pdata->rtc))
-               return PTR_ERR(pdata->rtc);
-
        pdata->rtc->ops = &pic32_rtcops;
        pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        pdata->rtc->range_max = RTC_TIMESTAMP_END_2099;