lkml.org 
[lkml]   [2012]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[03/75] rtc: Expire alarms after the time is set.
    3.1-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    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);



    \
     
     \ /
      Last update: 2012-01-04 00:07    [W:4.118 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site