Messages in this thread | | | Subject | Re: [03/67] rtc: Expire alarms after the time is set. | From | John Stultz <> | Date | Tue, 03 Jan 2012 14:46:05 -0800 |
| |
On Tue, 2012-01-03 at 14:29 -0800, Greg KH wrote: > 3.0-stable review patch. If anyone has any objections, please let me know.
This one is having problems upstream. Please hold off on it.
thanks -john
> ------------------ > > From: NeilBrown <neilb@suse.de> > > commit 93b2ec0128c431148b216b8f7337c1a52131ef03 upstream. > > If the alarm time programming in the rtc is ever in the past, it won't fire, > and any other alarm will be queued after it so they won't fire either. > > So any time that the alarm might be in the past, we need to trigger > the irq handler to ensure the old alarm is cleared and the timer queue > is fully in the future. > > This can happen: > - when we first initialise the alarm > - when we set the time in the rtc. > > so follow both of these by scheduling the timer work function. > > Signed-off-by: NeilBrown <neilb@suse.de> > [Also catch set_mmss case -jstultz] > Signed-off-by: John Stultz <john.stultz@linaro.org> > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> > > --- > drivers/rtc/interface.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > --- a/drivers/rtc/interface.c > +++ b/drivers/rtc/interface.c > @@ -72,6 +72,8 @@ int rtc_set_time(struct rtc_device *rtc, > err = -EINVAL; > > mutex_unlock(&rtc->ops_lock); > + /* A timer might have just expired */ > + schedule_work(&rtc->irqwork); > return err; > } > EXPORT_SYMBOL_GPL(rtc_set_time); > @@ -111,6 +113,8 @@ int rtc_set_mmss(struct rtc_device *rtc, > err = -EINVAL; > > mutex_unlock(&rtc->ops_lock); > + /* A timer might have just expired */ > + schedule_work(&rtc->irqwork); > > return err; > } > @@ -402,6 +406,8 @@ int rtc_initialize_alarm(struct rtc_devi > timerqueue_add(&rtc->timerqueue, &rtc->aie_timer.node); > } > mutex_unlock(&rtc->ops_lock); > + /* maybe that was in the past.*/ > + schedule_work(&rtc->irqwork); > return err; > } > EXPORT_SYMBOL_GPL(rtc_initialize_alarm); > >
| |