Messages in this thread | | | Date | Tue, 19 Apr 2016 00:34:14 +0200 | From | Alexandre Belloni <> | Subject | Re: [PATCH V1] rtc: da9053: fix access ordering error during RTC interrupt at system power on |
| |
On 14/04/2016 at 12:04:54 +0100, Steve Twiss wrote : > From: Steve Twiss <stwiss.opensource@diasemi.com> > > This fix alters the ordering of the IRQ and device registrations in the RTC > driver probe function. This change will apply to the RTC driver that supports > both DA9052 and DA9053 PMICs. > > A problem could occur with the existing RTC driver if: > > A system is started from a cold boot using the PMIC RTC IRQ to initiate a > power on operation. For instance, if an RTC alarm is used to start a > platform from power off. > The existing driver IRQ is requested before the device has been properly > registered. > > i.e. > ret = da9052_request_irq() > comes before > rtc->rtc = devm_rtc_device_register(); > > In this case, an interrupt exists before the device has been registered and > the IRQ handler can be called immediately: this can happen be before the > memory for rtc->rtc has been allocated. The IRQ handler da9052_rtc_irq() > contains the function call: > > rtc_update_irq(rtc->rtc, 1, RTC_IRQF | RTC_AF); > > which in turn tries to access the unavailable rtc->rtc. > > The fix is to reorder the functions inside the RTC probe. The IRQ is > requested after the RTC device resource has been registered so that > da9052_request_irq() is the last thing to happen. > > Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com> > Applied, thanks.
-- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
| |