lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJxhyqCGYeYQZfBSD41xFHDE2uqFsn0-9vUcYsa=1zGcSyPAzQ@mail.gmail.com>
Date: Mon, 2 Dec 2024 11:10:14 +0800
From: Yongliang Gao <leonylgao@...il.com>
To: Alexandre Belloni <alexandre.belloni@...tlin.com>
Cc: john.stultz@...aro.org, linux-rtc@...r.kernel.org, 
	linux-kernel@...r.kernel.org, Yongliang Gao <leonylgao@...cent.com>, 
	Jingqun Li <jingqunli@...cent.com>
Subject: Re: [PATCH] rtc: check if __rtc_read_time was successful in rtc_timer_do_work()

On Sat, Nov 30, 2024 at 7:20 AM Alexandre Belloni
<alexandre.belloni@...tlin.com> wrote:
>
> On 20/11/2024 22:17:34+0800, 高永良 wrote:
> > Hi Alexandre Belloni,
> >
> > I've noticed that the post-failure process for __rtc_read_time requires
> > careful handling.
> > 1. Need to call pm_relax.
>
> I had a look when taking your patch and I'm not convinced calling
> pm_relax is necessary.

Before all the code of schedule_work(&rtc->irqwork),
pm_stay_awake(rtc->dev.parent) is called. There are the following 4
functions:
 - rtc_set_time
 - rtc_update_irq
 - rtc_timer_enqueue
 - rtc_timer_remove
At the end of the normal processing flow of the rtc_timer_do_work
function, pm_relax(rtc->dev.parent) is called.
So, if it fails here, pm_relax(rtc->dev.parent) should be called, right?

>
> > 2. Potentially need to set the alarm to ensure subsequent interrupts can
> > process the
> >     expired timer? Could you give me some advice?
>
> Same thing, if you are not able to read the current time, setting the
> next alarm is going to fail anyway.

OK, I won't set the next alarm if it fails here. Thanks.

>
> > Should I continue to submit a fix patch or create a v2 version of the patch?
> >
> > Best Regards,
> > Yongliang Gao
> >
> > Alexandre Belloni <alexandre.belloni@...tlin.com> 于2024年11月12日周二 06:11写道:
> >
> > > On Fri, 11 Oct 2024 12:31:53 +0800, Yongliang Gao wrote:
> > > > If the __rtc_read_time call fails,, the struct rtc_time tm; may contain
> > > > uninitialized data, or an illegal date/time read from the RTC hardware.
> > > >
> > > > When calling rtc_tm_to_ktime later, the result may be a very large value
> > > > (possibly KTIME_MAX). If there are periodic timers in rtc->timerqueue,
> > > > they will continually expire, may causing kernel softlockup.
> > > >
> > > > [...]
> > >
> > > Applied, thanks!
> > >
> > > [1/1] rtc: check if __rtc_read_time was successful in rtc_timer_do_work()
> > >       https://git.kernel.org/abelloni/c/e8ba8a2bc4f6
> > >
> > > Best regards,
> > >
> > > --
> > > Alexandre Belloni, co-owner and COO, Bootlin
> > > Embedded Linux and Kernel engineering
> > > https://bootlin.com
> > >
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ